1

我们使用Sharepoint进行开发,因此我们必须坚持ASP.NET 3.5。 如果我们的页面有自动回送和一个按钮的字段,只要用户在autopostback字段中,我们就会遇到竞争条件并单击该按钮。 在这种情况下,按钮点击有时会比autopostback的更早返回,因此正在被覆盖。如何消除ASP.NET中autopostback = true元素的竞速条件?

以前有没有人遇到过这个问题?

什么是正确的解决方案?

ADDON: 我谈论起案件的情况如下:

<form> 
<ScriptManager /> 
<UpdatePanel> 
<TextBox AutoPostBack="True" /> 
<Button /> 
</UpdatePanel> 
</form> 
+0

什么要求在提交表单前自动回传?它是否像“用户名已存在”验证?在按钮事件中你无法解决的问题。 – Phill 2011-05-05 00:29:34

+0

请参阅我对第一个答案的评论。我们正在构建通用框架,因此可以在页面上使用AutoPostback的任意数量的字段。解决方案在我们的案例中必须是通用的。 – Artem 2011-05-05 00:36:20

+0

@Artem - 刚刚阅读过常见问题,我不明白具有自动回发功能的字段有什么作用,因此很难回答您的问题。这听起来像你使用autopostback错误的原因,如果每个字段是依赖于以前,或提交表单取决于回发的结果... – Phill 2011-05-05 00:39:23

回答

0

最基本的解决方案,我能想到的是禁止使用JavaScript的处理是造成了自动回发的客户端事件的按钮。

+0

然后我们将不得不禁用整个页面,因为页面可能有其他autopostback字段,这将导致相同的条件。因此我们将消除AJAX的所有优势。 :(可能你可以建议不那么简单的解决方案? – Artem 2011-05-05 00:30:13

0

您可以在等待回发时禁用该按钮。但这是一个黑客,你可能不想这样做。通常情况下,我希望控件可以进行验证,并在出现问题时阻止提交。

假设您在下拉框中有自动回复,在某些情况下,它会为某些子类别信息切换文本框。要么发生自动回复,要么首先更新文本框,否则提交将使用下拉列表的新值进行提交,服务器端验证将确定您是否需要在该子文本框中具有值。如果你这样做了,它会在启用时返回,并且可能会有一些红色文本表明它是必需的。