0

是否可以创建一个 ASP.NET 服务器控件来打包一些将在设计时而不是运行时发送到 aspx 页面的 javascript?我正在尝试创建一个具有“默认”javascript 的控件。我可以使用 RegisterClientScriptBlock 添加 jvascript,但是 Web 开发人员无法修改 javascript - 在这种情况下,它在设计时不可用。有没有办法更改 ToolBox 属性,以便当 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 回答