views:

573

answers:

1

Hello,

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, 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?

A: 

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!

Juan Jalil