我目前正在寻找一种方法来阻止ASP.NET中的多个表单提交(即用户多次点击提交按钮,导致OnClick-Event也会多次触发)。
目前,我这样做:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
Page.ClientScript.RegisterOnSubmitStatement(GetType(), "ServerForm",
"if (this.submitted) return false; this.submitted = true; return true;");
}
这类似于同步回发的魅力 - 每次回发后都会重置“提交”值,并阻止在同一次运行中多次提交表单 - 但是,此方法不适用于AsyncPostbacks,即UpdatePanel,所以现在我正在寻找一个想法来实现这一点,而不必在点击按钮后通过JS禁用和启用每个按钮。
谢谢,
丹尼斯
答案 0 :(得分:4)
您可以在javascript中使用Page.get_isInAsyncPostBack()来检查异步请求的状态。
请参阅此链接以获取更多信息: http://ranaictiu-technicalblog.blogspot.com/2009/03/prevent-concurrent-asynchronous.html
答案 1 :(得分:1)
为什么不检查数据库?如果用户已经注册,则给出一个警告框。 你也可以查看PRG pattern
答案 2 :(得分:0)
希望这会对你有所帮助。
答案 3 :(得分:0)
Sys.WebForms.PageRequestManager
中的方法以检查ASync请求。Sys.WebForms.PageRequestManager您可以修改以上示例中的代码&使用简单的javascript(如
)禁用该按钮 document.getElementById("YouButton.ClientID").disabled = true;