【发布时间】:2012-10-16 15:10:43
【问题描述】:
当页面最初呈现时,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 上的元素服务器代码中的父页面。
提前致谢。
附:我知道UpdatePanels 很糟糕,应该不惜一切代价避免使用,但我正在处理数百个已经在使用它们并且无法更改的消费页面。
【问题讨论】:
标签: javascript asp.net vb.net user-controls updatepanel