开发者

ASP.NET MVC 2 Client validation function in Ajax form

My problem is the following:

I'm using client validation function of the MVC 2.0 framework.

Everything is nice, when I use the validation in a simple form.

But when I use an Ajax form,开发者_StackOverflow社区 and I update the fields of the ajax form, the client validation doesn't work.

I think about, I have to refresh the validation after the ajax call but I don't know how I should do it.

Anybody can help me?


this happens because the window.mvcClientValidationMetadata fills in a different "scope" than the jquery validation or mvc client validation functions. I have solved this with jquery validation adding the following line before the ajax.begin form. Like this:

<div id="result"></div>

<% Html.EnableClientValidation(); %>

<% using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "result" }))

// here goes the form
<input type="submit" value="Create" />
<% } %>

this is the required code that needs to be added:


<script type="text/javascript">


function RefreshClientValidationMetadata() {
    var allFormOptions = window.mvcClientValidationMetadata;
    if (allFormOptions) {
        while (allFormOptions.length > 0) {
            var thisFormOptions = allFormOptions.pop();
            __MVC_EnableClientValidation(thisFormOptions);
        }
    }
}

RefreshClientValidationMetadata();

</script>

Of course the function RefreshClientValidationMetadata() can be added in any place.

Hope this help!


Try this:

$(document).ajaxComplete(function () {
   $.validator.unobtrusive.parse(document);             
});
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜