0

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

4

1 に答える 1

0

これを行う必要がある場合は、タグを挿入するプロパティをコントロールに作成します。次に、Web開発者は、可視性がなく、ビューステートが無効になっているasp:literalタグを作成します。これには、必要なすべての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();
   }

}
于 2009-06-29T14:01:21.233 に答える