我有几个 ASP.NET UpdatePanel,每个都有一个 AsyncPostBackTrigger 绑定到同一个按钮的服务器端单击事件。由于一次只能有一个 UpdatePanel 执行其操作,因此我使用.get_isInAsyncPostBack()
来PageRequestManager
防止用户在异步回发完成之前访问页面的另一部分。
该页面的另一部分需要连续动态更新多个更新面板。由于更新面板使用异步触发器,调用异步触发__doPostBack("<%=ButtonName.ClientID %>", 'PanelId');
。因此,它将快速移动到循环的下一次迭代并尝试更新下一个面板。但是,第二次迭代失败,因为已经有另一个更新面板在执行异步回发。
理想情况下,有一种方法可以等到.get_isInAsyncPostBack()
返回 false 而不会阻塞其他客户端活动。
研究让我找到了很多有我问题的人,几乎所有的人都被建议使用setTimeOut()
. 我不认为这对我有用。我不想在执行函数之前等待指定的时间。我只是希望我的 Javascript 在另一个脚本运行时等待,最好等到特定条件为真。
我知道很多人可能会建议我重新考虑我的模型。这实际上不是我的模型,而是交给我们的开发团队的模型,目前在引擎盖下是一团糟。由于时间限制,重写模型不是一种选择。唯一的选择是使这项工作。我认为如果我有办法让客户端代码等待而不阻塞,我的问题就会得到解决。