我有一个网站,它使用ASP.NET C#作为服务器端脚本,其中大多数服务器控件在Page_Init事件期间动态添加到页面上的UpdatePanel控件。以下代码片段:
contentPanel.ContentTemplateContainer.Controls.Add(new LiteralControl("<script>" + clientScriptText + "</script>"));
存在于我的Page_Init事件中(contentPanel是我的UpdatePanel的名称)。我的想法是,这将允许我从后面的代码运行JavaScript'alert()'函数 - 通过将“alert(\” - string - \“)”设置为'clientScriptText'的值。我已经通过将此代码放在UpdatePanel的PreRender事件中进行了测试(因为它是UpdatePanel而不是页面的PreRender事件,它不应该是导致问题的ASP.NET页面生命周期因素,如果它?),但是事件触发,当呈现页面时,不显示警报。我的代码如下所示:
protected void contentPanel_PreRender(object sender, EventArgs e)
{
clientScriptText = "alert(\"Hello\")";
contentPanel.Update(); //Doesn't work with or without this
}
有人可以看到可能出错的地方吗?谢谢。
答案 0 :(得分:0)
您必须使用ScriptManager运行JavaScript代码。 UpdatePanel有自己特定的生命周期和渲染技术,而ScriptManager的创建恰好是为了解决JS代码的问题。在UpdatePanel之外,您应该使用ClientScriptManager。