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