如何动态地将脚本添加到页面的<head></head>标签中

5
我使用asp.net 4和c#。
我在Web From页面中有一个Web用户控件。 当我包含Web用户控件时,我希望在最终生成的页面中也可以以编程方式包含一些脚本标记内的脚本。
有什么想法吗? 也许ScriptManager可以在这方面提供帮助?
请给我提供一个代码示例,我是相当新的开发人员,感谢您在此方面花费时间!
3个回答

6

我应该提到,在服务器端代码动态添加任何内容的关键部分之一是将 runat="server" 添加到您的 head 元素。 - joelmdev

4
我知道这是一个老问题,但有一个更简单的方法。请尝试以下操作:
Page.Header.Controls.Add(
    new LiteralControl(
        "<script>alert('Literal Added to <Head>.');</script>"
    )
);

如果你想在特定的<head>索引处添加脚本,可以使用 AddAt(index, new LiteralControl(...)) ,其中索引0表示<head>顶部。此外,joelmdev在评论中提到,你需要在head标签中添加runat="server",例如:<head id="head1" runat="server">

3

请查看ClientScriptManager的RegisterClientScriptBlock

来自MSDN:

...
ClientScriptManager cs = Page.ClientScript;

// Check to see if the client script is already registered.
if (!cs.IsClientScriptBlockRegistered(csType, csName))
{
  StringBuilder csText = new StringBuilder();
  csText.Append("<script type=\"text/javascript\"> function DoClick() {");
  csText.Append("Form1.Message.value='Text from client script.'} </");
  csText.Append("script>");
  cs.RegisterClientScriptBlock(csType, csName, csText.ToString());
}
...

谢谢Peter,我明白了。但是我仍然在使用MasterPage时遇到问题,奇怪的是,在没有MasterPage的Web表单中,脚本可以正常工作,但如果有一个MasterPage,我无法将其添加到<head>中...你有什么解决方法吗?感谢您在此事上花费的时间。 - GibboK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接