ASP.NET UpdatePanel PreRender问题

时间:2014-02-02 19:14:08

标签: c# asp.net updatepanel page-lifecycle

我有一个网站,它使用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
        }

有人可以看到可能出错的地方吗?谢谢。

1 个答案:

答案 0 :(得分:0)

您必须使用ScriptManager运行JavaScript代码。 UpdatePanel有自己特定的生命周期和渲染技术,而ScriptManager的创建恰好是为了解决JS代码的问题。在UpdatePanel之外,您应该使用ClientScriptManager