【发布时间】:2018-08-30 17:42:45
【问题描述】:
我的 MasterPage 中的代码每 5 秒在我的内容页面上造成完整的 page_load。可悲的是,这意味着它破坏了我的一些内容页面以及它们的编程方式。我希望单独的 UpdatePanel 只允许更新该区域,而不刷新内容页面上的其他 UpdatePanel 和资源。
我尝试将 Timer 移出 UpdatePanel,将 UpdatePanel 更改为 UpdateMode="Conditional",甚至使用第三方 AjaxPanel (Telerik)。
所有结果都是一样的,内容页面每 5 秒重新加载一次,清除标题模板(如下所示),有时会破坏网站上的某些功能。
在我想出一种方法只进行文字更新而不重新加载其他资源之前,我必须禁用计时器。
如果需要,我很乐意发布更多代码,但我不想提供可能不重要的信息。
MasterPage - Site.Master
<title><%: Page.Title %> - My ASP.Net Site</title>
<asp:UpdatePanel ID="UpdatePanelMenu" runat="server">
<ContentTemplate>
<span>Tickets<asp:Literal ID="LiteralUnassignedTickets" runat="server"></asp:Literal></span>
<asp:Timer ID="TimerAutoRefreshMenu" runat="server" Interval="5000" Enabled="true"></asp:Timer>
</ContentTemplate>
</asp:UpdatePanel>
【问题讨论】:
-
您确定 UpdatePanel 是个好主意吗?那么实现 AJAX 轮询呢?或者更好的是 - 使用 SignalR 在发生更改时立即通知客户。
-
老实说,我只是按照我认为我知道的去做!也许我应该投资其他东西。但是,整个项目都在 ASP.Net 中,使用 UpdatePanels 和 LINQ。如果可以使用项目中的当前技术使其工作,我宁愿不要成为将其他东西带到桌面上的人。
-
UpdatePanel 是 Web 表单中最糟糕的部分之一。您可以做的任何事情来摆脱 UpdatePanel(和 Web 表单)都是一件好事。特别是在这种情况下。它将简化您的页面逻辑(您不必过滤掉部分回发),您不必使用轮询来检索更新(更少的客户端和服务器处理时间,更少浪费的带宽),用户将更快地获得更新,以及通过网络发送的数据量。使用 SignalR 正是它的设计目的。
-
好吧,我的朋友,这三天的周末我要读书了!谢谢!
标签: asp.net vb.net updatepanel master-pages