ASP.net MVC Validation Hook

后端 未结 2 1624
慢半拍i
慢半拍i 2021-02-04 04:56

I have the following view in ASP.net MVC 3:

@model Models.CreateProjectViewModel



        
相关标签:
2条回答
  • 2021-02-04 05:50

    As jQuery/Validation docs says, you could use invalidHandler to react when an invalid form is submitted.

    But since MVC unobtrusive validation instantiates the Validation itself, you have to hook this event later.

    Using exactly the same mechanism as the jQuery/Validation does: you could bind your code to the form elements custom event 'invalid-form.validate', witch corresponds to the invalidHandler!

    $(document).ready(function() {
        $('#myform').bind('invalid-form.validate',function(){
            alert('invalid form!');
        });
    });
    

    to give your form an id use:

    @using (Html.BeginForm(null, null, FormMethod.Post, new { id = "myform" })) {
    } 
    

    Update:

    An alternative way to get the existing validation object is calling validate() on the form. If a validator for this form was already created, it will be returned:

    Edit: after initialization occured, changing .settings.invalidHandler is too late for binding. So the following snippet will not work [anymore] unless you re-init the validator.

    $(document).ready(function() {
        var existingValdiation = $("#myform").validate();
        //the settings property corresponds to the options parameter
        existingValdiation.settings.invalidHandler = function (form) {
            alert('invalid form!');
        };
        // not recommended:
        // re-init would bind settings.invalidHandler to 'invalid-form.validate'
        // existingValdiation.init();
    });
    
    0 讨论(0)
  • 2021-02-04 05:51

    You can use the invalidHandler, I believe that is in jquery validation.

    invalidHandler Callback
    Callback for custom code when an invalid form is submitted. Called with a event object as the first argument, and the validator as the second.

    0 讨论(0)
提交回复
热议问题