如何动态地在页面中添加脚本

时间:2011-08-03 14:50:49

标签: c# asp.net html scriptmanager

我使用asp.net 4和c#。

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

知道怎么做吗? 也许ScriptManager可以为此提供帮助?

请向我提供一些代码示例,我非常擅长开发,谢谢您的时间!

3 个答案:

答案 0 :(得分:5)

彼得的回答将添加到页面,但不是头部元素。看看这篇文章:

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

它提供了一种使用扩展方法向head元素添加脚本的简洁方法。

答案 1 :(得分: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());
}
...

答案 2 :(得分:1)

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

试试这个:

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

如果要在<head>的特定索引处添加脚本,可以使用

AddAt(index, new LiteralControl(...))其中索引0等于<head>

的顶部

此外,joelmdev在评论中提到您需要在头标记中添加runat="server",例如<head id="head1" runat="server">