【发布时间】:2011-08-03 14:50:48
【问题描述】:
我使用 asp.net 4 和 c#。
我在 Web From 页面中有一个 Web User Control。 当我包含 Web 用户控件时,我还想以编程方式在最终生成页面的标签中包含一些脚本。
知道怎么做吗? 也许 ScriptManager 可以帮助解决这个问题?
请给我一个代码示例,我在开发方面非常新,感谢您在这方面的时间!
【问题讨论】:
标签: c# asp.net html scriptmanager
我使用 asp.net 4 和 c#。
我在 Web From 页面中有一个 Web User Control。 当我包含 Web 用户控件时,我还想以编程方式在最终生成页面的标签中包含一些脚本。
知道怎么做吗? 也许 ScriptManager 可以帮助解决这个问题?
请给我一个代码示例,我在开发方面非常新,感谢您在这方面的时间!
【问题讨论】:
标签: c# asp.net html scriptmanager
Peter 的回答会添加到页面中,但不会添加到 head 元素中。看看这篇文章:
http://weblogs.asp.net/johnkatsiotis/archive/2008/08/08/add-scripts-to-head-dynamically.aspx
它提供了一种使用扩展方法将脚本添加到头部元素的简洁方式。
【讨论】:
看看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());
}
...
【讨论】:
我意识到这是一个老问题,但有一个更简单的方法。
试试这个:
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">
【讨论】: