如何检查验证组是否通过?

时间:2017-07-21 13:23:43

标签: asp.net user-controls

目前正在使用UserControls。

有这个按钮:

<dx:ASPxButton ID="btnSave" runat="server" Text="Save" CssClass="btn btn-active" ValidationGroup="MyValidationGroup" OnClick="BtnSaveClick">

我从队友那里继承了这段代码。

最近我发现如果多次点击按钮,它会重复记录。

我尝试添加

btnSave.ClientEnabled = false; 

btnSave.Enabled = false;

进入后面的代码,但它不能防止重复记录。

如何检查验证组是否(成功)传递到jquery或javascript,而不是禁用前端的按钮?

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

你可以这样做$(文件).ready(function(){

$('#ctl00_MainContent_btnSave')
  .attr("onclick", null)
  .removeAttr("onclick")
  .click(function() {         
  // To validate you form using Validation group.
   if (typeof (Page_ClientValidate) == 'function') {
                Page_ClientValidate("ValidationGroup");
                if (Page_IsValid == true) {
                    alert('the form is valid');
                }
            } else {
                if ($(this).valid()) {
                    alert('the form is valid');
                }
            }               

        //Disable button before page posting back
        WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions($(this).attr("name"), "", true, "", "", false, false));
    });

});

答案 1 :(得分:1)

如果您不想要重复,为什么不在数据库级别检查它们?禁用按钮有助于双击。但是,如果用户按下F5或将页面重新加载为新页面然后再次按下该按钮,您仍将获得相同的结果。

对于MS SQL,你可以这样做:

IF NOT EXISTS (SELECT column FROM table WHERE (column = @myVar))
    INSERT INTO table (column) VALUES (@myVar)

或者您也可以在列上放置约束

ALTER TABLE table ADD CONSTRAINT UQ_column UNIQUE (column)

答案 2 :(得分:1)

简单地使用

<asp:Button ID="btnSave" runat="server" class="btn btn-active" OnClick="btnSave_Click" ValidationGroup="validation" Text="Save" OnClientClick="if (!Page_ClientValidate()){ return false; } this.disabled = true; this.value = 'Saving...';"
                                        UseSubmitBehavior="false" />

此代码段将禁用您的按钮,并且不允许多次单击直到执行其代码的click事件 希望这会有所帮助:)

答案 3 :(得分:0)

我明白了。当我使用代码@Shayan Hafeez提供时,编译器抛出异常。

The server tag is not well formed.

然后,我从按钮中删除了OnClientClick并将此代码插入代码隐藏:

btnSave.ClientSideEvents.Click = "if (!Page_ClientValidate()){ return false; } this.disabled = true; this.value = 'Saving...';";

现在工作正常。