ASP CustomValidator, advancing to postback after error

后端 未结 3 681
死守一世寂寞
死守一世寂寞 2021-01-22 19:55

I have an ASP .NET page with ASP validators (Required Field, Regular Expression,...) plus java script functions for additional validation (for example, to check if second date b

相关标签:
3条回答
  • 2021-01-22 20:24

    like @Jason wrote, when using CustomValidator client is excepting for source and arguments params. a quick sample of use both client and server side with CustomValidator.

    CustomValidator use ClientValidationFunction and OnServerValidate properties:

    <asp:CustomValidator ID="cvCreditCard"  runat="server" ErrorMessage="Error Message"  ControlToValidate="txtCardNumber" ClientValidationFunction="Validators.CardNumber" OnServerValidate="ValidateCreditCardValid">*</asp:CustomValidator>
    

    Client side validation:

    var Validators = {
    CardNumber: function (source, clientside_arguments) {
    
        var valid_val = true;
        var txtCardNumber = clientside_arguments.Value; //(return the ControlToValidate value)
    
        //make your checks here
    
        clientside_arguments.IsValid = valid_val;
    }}
    

    server side validation:

    protected void ValidateCreditCardValid(object sender, ServerValidateEventArgs e)
        {
           //make your checks here            
           e.IsValid = false;
    
        }
    
    0 讨论(0)
  • 2021-01-22 20:25

    When using a CustomValidator, the client side validation function needs to accept a source and an arguments parameter. Then, to mark the validation as failed, you set arguments.IsValid to false. Here is the MSDN page for the CustomValidator.

    function validate(source, arguments) {
       // ...
    
       alert('Not valid!');
       arguments.IsValid=false;
    }
    
    0 讨论(0)
  • 2021-01-22 20:34

    I solved this problem by creating a variable:

     Boolean fieldIsValid = true;
    

    and in the custom validating expression method I would change the value if arguments weren't true:

    if(args.IsValid == false)
                {
                    fieldIsValid = false;
                }
                else
                {
                    fieldIsValid = true;
                }
    

    Then, I also put that in the submit click method:

    protected void submit_Click(object sender, EventArgs e)
            {
                if (fieldIsValid)
                {
                    //submit my things
                }
            }
    
    0 讨论(0)
提交回复
热议问题