开发者

MVC2 Client Validation isn't working when getting form from ajax call

I'm trying to use MVC2 client-side validation in a partial 开发者_运维百科view that is rendered via $.get. However, the client validation isn't working. I'm not quite sure what the deal is.

[Required(ErrorMessage = "Email is required")]
public string Email { get; set; }

<% using ( Ajax.BeginForm( new AjaxOptions { Confirm = "You sure?" } ) ) { %>
<%: Html.TextBoxFor( m => m.Email, new { @class = "TextBox150" } )%>
<%= Html.ValidationMessageFor( m => m.Email )%>
<input type="submit" value="Add/Save" style="float: right;" />
<% } %>

I'm not doing anything special to render the the partial view. Just putting the html into a div and showing it in a modal popup.

On a side note, does anyone know if it's possible to submit the form with client validation without a submit button?


MVC2 client-side validation relies on some additional javascript being rendered on the page that encodes the validation rules from the model. I think you can get this from a partial view, though I haven't tried, as long as you include the EnableClientValidation call in your partial view just prior to beginning the form. Make sure that you have the MVC client javascript included in the main view.

<% Html.EnableClientValidation(); %>
<% using ( Ajax.BeginForm( new AjaxOptions { Confirm = "You sure?" } ) ) { %>
<%: Html.TextBoxFor( m => m.Email, new { @class = "TextBox150" } )%>
<%= Html.ValidationMessageFor( m => m.Email )%>
<input type="submit" value="Add/Save" style="float: right;" />
<% } %>

I usually use MVC2 model-based validation in conjunction with the jQuery validation plugin using the MVC/jQuery glue javascript from the MVCFutures code. I know that this works on form submission, whether the submit is triggered via a submit button or javascript. All of my "buttons" are really links that trigger form submission via javascript and it works for me. I presume this is true of the standard MVC validation scripts, but haven't used them.


Some time ago I wrote a post about this issue, you might use it as start point in your situation (you will have to modify the place where you call the functions and pass correct element to process): http://tpeczek.com/2010/04/making-aspnet-mvc-2-client-side.html

0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜