【问题标题】:How to add Script in the Page <head></head> dynamically如何在页面 <head></head> 中动态添加脚本
【发布时间】:2011-08-03 14:50:48
【问题描述】:

我使用 asp.net 4 和 c#。

我在 Web From 页面中有一个 Web User Control。 当我包含 Web 用户控件时,我还想以编程方式在最终生成页面的标签中包含一些脚本。

知道怎么做吗? 也许 ScriptManager 可以帮助解决这个问题?

请给我一个代码示例,我在开发方面非常新,感谢您在这方面的时间!

【问题讨论】:

    标签: c# asp.net html scriptmanager


    【解决方案1】:

    Peter 的回答会添加到页面中,但不会添加到 head 元素中。看看这篇文章:

    http://weblogs.asp.net/johnkatsiotis/archive/2008/08/08/add-scripts-to-head-dynamically.aspx

    它提供了一种使用扩展方法将脚本添加到头部元素的简洁方式。

    【讨论】:

    • 我应该提到,在服务器端代码中动态添加任何内容到头部的关键位之一是将 runat="server" 添加到您的头部元素。
    【解决方案2】:

    看看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());
    }
    ...
    

    【讨论】:

    • 谢谢彼得 我明白了,我在 MasterPage 中使用仍然有问题,有线的东西来自没有母版页的 web 表单脚本工作正常,如果有 mp 我不是能够添加 ... 知道如何解决它吗?感谢您抽出宝贵时间。
    【解决方案3】:

    我意识到这是一个老问题,但有一个更简单的方法。

    试试这个:

    Page.Header.Controls.Add(
        new LiteralControl(
            "<script>alert('Literal Added to <Head>.');</script>"
        )
    );
    

    如果您想在 &lt;head&gt; 的特定索引处添加脚本,您可以使用

    AddAt(index, new LiteralControl(...)) 其中索引 0 等于 &lt;head&gt; 的顶部

    此外,joelmdev 在评论中提到,您需要在 head 标签中添加 runat="server",例如&lt;head id="head1" runat="server"&gt;

    【讨论】:

      猜你喜欢
      • 2020-01-14
      • 1970-01-01
      • 2021-07-04
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      • 2015-07-30
      • 1970-01-01
      • 2012-08-26
      相关资源
      最近更新 更多