Jquery MVC2客户端验证isn';从ajax调用获取表单时无法工作

Jquery MVC2客户端验证isn';从ajax调用获取表单时无法工作,jquery,asp.net-mvc-2,validation,Jquery,Asp.net Mvc 2,Validation,我试图在通过$.get呈现的部分视图中使用MVC2客户端验证。但是,客户端验证不起作用。我不太清楚这笔交易是什么 [Required(ErrorMessage = "Email is required")] public string Email { get; set; } <% using ( Ajax.BeginForm( new AjaxOptions { Confirm = "You sure?" } ) ) { %> <%: Html.TextBoxFor( m =

我试图在通过$.get呈现的部分视图中使用MVC2客户端验证。但是,客户端验证不起作用。我不太清楚这笔交易是什么

[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;" />
<% } %>
[必需(ErrorMessage=“需要电子邮件”)]
公共字符串电子邮件{get;set;}
m、 电子邮件,新的{@class=“TextBox150”})%>
m、 电子邮件)%%>
我没有做任何特殊的事情来渲染局部视图。只需将html放入一个div中,并在模式弹出窗口中显示它


另一方面,有人知道是否可以在不使用提交按钮的情况下通过客户端验证提交表单吗?

MVC2客户端验证依赖于页面上呈现的一些额外javascript,这些javascript对模型中的验证规则进行编码。我认为您可以从局部视图中获得这一点,尽管我没有尝试过,只要您在开始表单之前在局部视图中包含EnableClientValidation调用。确保主视图中包含MVC客户端javascript

<% 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;" />
<% } %>

m、 电子邮件,新的{@class=“TextBox150”})%>
m、 电子邮件)%%>

我通常将基于MVC2模型的验证与使用MVC/jQuery glue javascript的jQuery验证插件结合使用。我知道这对表单提交有效,无论提交是通过提交按钮还是javascript触发的。我所有的“按钮”实际上都是通过javascript触发表单提交的链接,对我来说很有用。我认为标准MVC验证脚本也是如此,但还没有使用它们。

不久前我写了一篇关于这个问题的文章,您可能会将它作为您的情况的起点(您必须修改调用函数的位置,并将正确的元素传递给进程):

很抱歉,我忘了在代码片段中包含这一点。我的ajax.begin表单上方确实有以下内容:@devlife——我刚刚注意到它是通过ajax提交的。我不知道在通过AJAX提交表单时是否会触发验证逻辑——因为AJAX脚本会中止提交事件,因此它可以异步执行。您可能需要在OnBegin方法中手动触发验证。我想,是时候使用javascript的调试版本来启动Firebug,看看实际执行的是什么了。如果您不想在页面中插入表单,而只是插入几个输入元素,那么这是如何工作的?