按钮在自定义验证发生之前单击火警

时间:2015-03-30 07:12:13

标签: c# asp.net

我有一个带有自定义验证器和Button的表单。 但是,我的自定义验证器仅在按钮单击后显示错误。 这是我的验证器,Button和代码。

   <asp:CustomValidator ID="CustomValidator1" runat="server" 
                ErrorMessage="User Name cannot be Empty!" ForeColor="Red" 
                onservervalidate="CustomValidator1_ServerValidate" 
                ControlToValidate="userNameTxt" ValidateEmptyText="True" 
                ValidationGroup="save-valid"></asp:CustomValidator>
     <asp:Button ID="saveButton" runat="server" Text="Save"   CssClass="save-button"  
      onclick="saveButton_Click" TabIndex="7" ValidationGroup="save-valid" /> 

这是我背后的代码。

     protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
    {
        if (IsUserValid(userNameTxt.Text))
        {
            CustomValidator1.ErrorMessage = "User Name cannot be Empty!";
            args.IsValid = false;

        }
        else
            args.IsValid = true;


    }

    protected void saveButton_Click(object sender, EventArgs e)
    {

         //This code executes regardless of CUstom Validator
    }

2 个答案:

答案 0 :(得分:2)

您可以尝试使用客户端验证。

<script type="text/jscript">
function textBoxControl(source,arguments){
    if(arguments.Value.length >0) //or control things (e.g. at least 6 character)
        arguments.isValid = true;
    else
        arguments.isValid = false;  
}
<script>

背后的代码如下所示。

<asp:TextBox ID="userNameTxt" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" />
<asp:CustomValidator ID="CustomValidator1"
        runat="server" ErrorMessage="CustomValidator" 
        onservervalidate="CustomValidator1_ServerValidate"
        ControlToValidate="userNameTxt"
        ClientValidationFunction="textBoxControl"></asp:CustomValidator>

答案 1 :(得分:1)

当我将下面的代码放在Save按钮内时,问题就解决了。

        if (!Page.IsValid)
            return;