并发异步回调

6

请问asp.net专家,我花了很多时间尝试寻找答案或自己解决,但迄今为止没有运气。

我的ASP.NET Web应用程序。我计划通过使用UpdatePanels延迟加载页面的部分内容,以提高页面加载时间,从而改善用户体验。我可以使用最小间隔的计时器使一个UpdatePanel在页面加载后立即更新自身。这样做非常好,但是当尝试使用多个UpdatePanels完成此操作时,问题就开始出现了。基本上发生的事情是所有面板都被顺序地更新,而不是同时更新。

现在,我已经了解到这是由于每个异步回发结果都携带完整的页面视图状态,为了防止视图状态不一致,异步回发被串行化处理。实际上,他们说只有最后一个回调才会成功,所以我很幸运能够让它们串行化,我猜。

现在是一个大问题:有人找到了解决方法吗?如果可能的话,在ASP.NET中。这将是一个非常有价值的答案,可能不仅对我有用。

谢谢,谢谢,谢谢(期待有效的答案)

1个回答

5

UpdatePanels的设计是同步的。

如果您想同时执行多个请求,您需要使用页面方法、AJAX服务或原始的AJAX。无论哪种方式都意味着放弃ViewState。

如果您想为多个AJAX请求并发渲染ASP.Net控件,可以创建包含这些控件的小型独立ASPX文件,向它们发送AJAX请求,并将渲染后的HTML插入到DOM中。在jQuery中,您可以像这样操作:$('selector').load('something.aspx')。请注意,postbacks和viewstate都无法使用。


这可能是我能得到的最好的答案了。学到这一点有点令人难过,遗憾的是在帮助/文档中没有明确说明。更重要的是,AsyncPostBackTrigger触发器类型会暗示UpdatePanel支持异步操作。 我不想将页面分成一堆子页面——解决方案不值得麻烦。但我该如何使用页面方法呢? - Maciej
页面方法不是我在这里寻找的。可能JavaScript会是我的答案。谢谢。 - Maciej

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接