2009-10-01 70 views
0

在有一个大的UpdatePanel一个相当复杂的画面,我运行到以下问题:更新面板:防止同一用户发出多个并发请求?

如果用户点击某个按钮6或7次的真快,似乎最终处理出来的最后一个请求转而出现问题。具体来说,会话​​状态中有一个xml文档,它不同步。

我真正想要做的是阻止点击此按钮,直到回发完成。我知道我可以找到一个简单的方法来使用Javascript做到这一点,但它似乎可能是内置的。

有什么想法?

注意:下面的答案是有帮助的,但他们还没有解决问题。使用onClientClick禁用链接按钮后,再次启用回发后允许它回来,问题依然存在。这几乎就好像updatepanel没有完成所有事情,即使它已经在屏幕上绘制了新的启用链接按钮。

更多笔记(已解决!):我用BlockUI(jQuery插件)解决了这个问题。请参阅下面的答案。

+0

任何解决方案与*** BlockUI ***?代码示例? – Kiquenet 2016-05-25 16:30:45

回答

1

UpdatePanel?我会假设你使用MS AJAX,如果是的话,我会建议你下载AJAX工具包,如果你还没有这样做。该工具包随附许多随时可用的控件和扩展程序,以帮助您在支持AJAX的应用程序中使用。例如,有一个名为“ConfirmButton”的扩展名可以帮助您防止用户多次点击按钮,而且它也以非常酷的优雅方式进行操作。

另一个选择是使用JavaScript或更好的方式创建一个自定义按钮控件,该控件在被点击后有一个属性被禁用,如果你这样做了,那么在其他应用程序中重用它真的很容易。

希望这会有所帮助。

3

ASP.NET UpdatePanel始终尊重最后一个请求。如果您在处理某个请求时发出请求,则会先终止第一个请求,并处理当前的请求。它的设计和构建以这种方式工作。

一旦点击了JavaScript,我会禁用该按钮。

+1

...并确保处理完成之后,你重新启用按钮。 – 2009-10-02 13:17:29

+0

看看我的笔记,如果你有时间......还有更多的事情在这里。 – 2009-10-02 16:28:26

1

在家庭轧AJAX框架我工作一段时间回来,我们只是记录在JavaScript中的最后一次通话(javascript函数调用与许多参数),并阻止与相同参数的后续调用。这不是理想的,但它捏了一把。下面

1

我与Infragistics的控制有些“ASYC”的问题,但在Scripmanager加入ScriptMode =“释放”后,问题解决。