2009-06-29 13 views
0

実行時ではなく設計時にaspxページに出力されるいくつかのjavascriptをパッケージ化するASP.NETサーバーコントロールを作成することはできますか?私は "デフォルト"のJavaScriptを持つコントロールを作成しようとしています。私はRegisterClientScriptBlockを使用してjvascriptを追加できますが、Web開発者はjavascriptを変更できません。このシナリオではデザインタイムは使用できません。 Webアプリケーション開発者がコントロールをページにドロップすると、JavaScriptが別のスクリプトタグにも追加されるように、ToolBoxのプロパティを変更する方法はありますか?ASP.NETサーバーコントロールからパッケージ化されたjavascriptをページに追加しますか?

答えて

0

私はこれを行う必要があるとき、私は、タグを注入するコントロールにプロパティを作成し、Web devはasp:リテラルタグを可視性なしとviewstateを無効にし、必要なJSをすべて持っています。

ページのコードの後ろに、リテラルのテキストがサーバコントロールのプロパティに挿入されます。

<asp:Literal ID="Literal_HtmlHeader" runat="server" Visible="false" EnableViewState="false"> 
<script></script> 
<style></style> 
</asp:Literal> 

おそらくもっと良い方法がありますが、これは簡単で効果的です。

protected void Page_Load(object sender, EventArgs e) 
{ 

    if (!String.IsNullOrEmpty(this.Literal_HtmlHeader.Text.Trim())) 
    { 
     //inject css and js into header. 
     Page.Header.Controls.Add(new LiteralControl(this.Literal_HtmlHeader.Text)); 

     // or add to your control cause it knows how to add the tags so there is no duplication. 
     ServerControl c = new ServerControl(); 
     c.HtmlHeaderCode = this.Literal_HtmlHeader.Text.Trim(); 
    } 

} 
関連する問題