0

我们如何避免母版页回发整个页面?

4

3 回答 3

2

只是为了澄清 - 更新面板不会阻止整个页面回发或整个页面生命周期。它只是导致该过程在用户“看不见”的后台完成。唯一的区别是,在回发完成后,只有更新面板声明包裹的部分被刷新,从而造成只有部分页面被回发的错觉。

如果触发器控件位于更新面板内,则应将 ChildrenAsTriggers 属性设置为 True。如果触发更新的控件在更新面板之外,那么您应该将 Triggers 部分添加到控制面板并添加异步触发器。如果是组合,那么你可以将两者结合起来以获得最佳效果。

如果触发更新的控件包含在更新面板中:

<asp:UpdatePanel id="MyUpdatePanel" runat="server" ChildrenAsTriggers="True">
  <ContentTemplate>
    ...Stuff you want updated
  </ContentTemplate>
</asp:UpdatePanel>

或者,如果控件不包含在更新面板中:

<asp:UpdatePanel id="MyUpdatePanel" runat="server">
  <ContentTemplate>
    ...Stuff you want updated
  </ContentTemplate>
  <Triggers>
    <asp:AsyncPostBackTrigger ControlID="MyButtonControl" EventName="Click" />
  </Triggers>
</asp:UpdatePanel>
于 2008-12-23T14:22:39.487 回答
1

使用母版页对整个页面是否回发实际上没有任何影响。一个没有母版和标准的简单 ASPX 页面也可以进行整个页面的回发。

不过从字里行间看,我猜您的母版页上已经有一些 UpdatePanel(可能围绕内容占位符),当其中的某些内容导致回发时,它们会阻止整个页面刷新。

无论哪种方式,防止整个页面刷新(无论是否使用母版页)的关键是确保导致回发的控件位于 UpdatePanel 中,或者使用一些 JavaScript 回调服务器并异步处理响应。

于 2008-12-23T14:10:09.153 回答
0

母版页不负责 PostBack,这就是 HTML 表单的用途。

阻止页面回发的唯一方法是将整个内容包装在 UpdatePanel 中。但这本身就是个坏主意!!

于 2008-12-23T09:51:44.307 回答