开发者

ASP.Net MVC 3 validation on AjaxForm

I ha开发者_开发技巧ve an ajax form on razor view engine. For validation i use dataanotation classes. Validation work fine when user submit the form, validation messages work fine. The problem is, validation wont work on keyup or blur events.

How can i activate validation without submit on ajaxform(ajax.beginform)

Here is my view code:

@using (Ajax.BeginForm(new AjaxOptions { InsertionMode = InsertionMode.Replace,       
        UpdateTargetId = "employeeDetail", HttpMethod = "Post", OnComplete = "Complete", 
        Confirm = "Confirm?" }))
{
    @Html.TextBoxFor(model => model.Email)
    @Html.ValidationMessageFor(model=>model.Email)
    <span style="float:right"><input type="submit" class="tableGenelButton" id="submitButton" value="Kaydet" /></span>
}

Model:

  [RequiredWithMessage]
  [Display(Name = "E-Mail")]
  public string Email { get; set; }


Update:

Ok, apparently you're using Ajax.BeginForm which uses MicrosoftAjax in stead of jQuery (I didn't realize that before). This one needs some extra work to enable client side validation:

You need

<% Html.EnableClientValidation(); %> 

Somewhere in your page, and also links to MicrosoftAjax.js, MicrosoftMvcAjax.js and MicrosoftMvcValidation.js

Here's a link that might be interesting for you:

ASP.NET MVC Client Side Validation With Ajax.BeginForm


To enable client side validation for a custom validation attribute (I guess [RequiredWithMessage] is one of those), you have to implement the IClientValidatable interface.

Here is an article that explains how to do that:

The Complete Guide To Validation In ASP.NET MVC 3 - Part 2


Assuming you have client side validation enabled, you will need to call .validate() in the relevant events:

$("#theFormToValidate input").blur(function(){
    $("#theFormToValidate").validate();
});

and

$("#theFormToValidate input").keyup(function(){
    $("#theFormToValidate").validate();
});
0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜