【问题标题】:MVC2 Client Validation isn't working when getting form from ajax call从 ajax 调用获取表单时,MVC2 客户端验证不起作用
【发布时间】:2010-05-23 14:06:58
【问题描述】:

我正在尝试在通过 $.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;" />
<% } %>

我没有做任何特别的事情来渲染局部视图。只需将 html 放入 div 并在模式弹出窗口中显示它。

顺便说一句,有谁知道是否可以在没有提交按钮的情况下提交带有客户端验证的表单?

【问题讨论】:

    标签: jquery asp.net-mvc-2 validation


    【解决方案1】:

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

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

    【讨论】:

    • 对不起,我忘了在代码 sn-p 中包含它。我的 ajax.begin 表单上方确实有以下内容:
    • @devlife -- 我刚刚注意到它是通过 AJAX 提交的。我不知道通过 AJAX 提交表单时是否会触发验证逻辑——因为提交事件被 AJAX 脚本中止,因此它可以异步执行。您可能需要在 OnBegin 方法中手动触发验证。我认为是时候使用调试版本的 javascript 启动 Firebug 并查看实际执行的内容了。
    • 如果您不想在页面中插入表单,只需几个输入元素,这如何工作?
    【解决方案2】:

    前段时间我写了一篇关于这个问题的帖子,你可以将它作为你情况的起点(你将不得不修改你调用函数的地方并将正确的元素传递给进程): http://tpeczek.com/2010/04/making-aspnet-mvc-2-client-side.html

    【讨论】:

      猜你喜欢
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多