当页面最初呈现时,该initializeControl
函数被调用并且一切正常。
当页面执行完整的回发(通过提交按钮)时,该initializeControl
函数也被调用并且一切正常。
但是,当有 的部分回发时UpdatePanel
,永远不会调用该initializeControl
函数并且控件停止工作。
HTML:
<asp:ScriptManager ID="myScriptManager" runat="server" />
<asp:UpdatePanel ID="myUpdatePanel" runat="server">
<ContentTemplate>
<uc:MyControl ID="myControl" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
用户控制:
Protected Overrides Sub Render(ByVal writer As HtmlTextWriter)
Dim initializeScript = String.Format("initializeControl('{0}');", ClientID)
Page.ClientScript.RegisterStartupScript(GetType(Page),
New Guid().ToString(), initializeScript, True)
MyBase.Render(writer)
End Sub
出于测试目的,假设initializeControl
函数只是一个debugger;
(函数的内容工作正常 - 它只是在需要时不被调用)。
请记住,用户控件无法(据我所知)知道它是否在内部UpdatePanel
,并且它也无法访问ScriptManager
服务器代码中父页面上的元素。
提前致谢。
PS 我知道UpdatePanel
s 很糟糕,应该不惜一切代价避免,但我正在处理数百个已经在使用它们并且无法更改的消费页面。