防止在asp:CommandField中提交双重提交

时间:2013-02-27 18:39:43

标签: asp.net double-submit-prevention

拥有此代码:

<asp:UpdatePanel ID="id">
 <asp:CommandField ButtonType="Image" InsertImageUrl="url/here" ShowInsertImage="true" ValidationGroup="valGr" />
</asp:UpdatePanel>

如何防止在C#代码中双击此按钮。

1 个答案:

答案 0 :(得分:0)

您可以先创建一个包含提交的标志,然后将其添加到表单中。然后在UpdatePanel进行更新并等待返回时打开和关闭该标志。

例如,此代码仅允许提交表单(和UpdatePanel) fAlloToSubmittrue

<script>
    var fAlloToSubmit = true;

    function AllowFormToRun()
    {
      if(!fAlloToSubmit)
          alert("Please wait for the page to fully re-loaded.");

      return fAlloToSubmit;
    }
</script>

并在你背后的代码上设置了表格。

protected void Page_Load(object sender, EventArgs e)
{
   Page.Form.Attributes["onsubmit"] = "return AllowFormToRun();";
}

现在对于UpdatePanel,您可以在更新时打开该标志,例如,当您单击该命令时:

<script>
var prm = Sys.WebForms.PageRequestManager.getInstance();    
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);

function InitializeRequest(sender, args) {
   // here is run when you click the command on the UpdatePanel      
   fAlloToSubmit = false;
}

function EndRequest(sender, args) {
   // here is come after the upadate of the command
   fAlloToSubmit = true;
}
</script>

这里的诀窍是我保持表单提交而不是查看页面上的每个控件来禁用它。