代码之家  ›  专栏  ›  技术社区  ›  devlife

从ajax调用获取表单时,MVC2客户端验证不起作用

  •  2
  • devlife  · 技术社区  · 15 年前

    我尝试在通过$.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中并在模式弹出窗口中显示它。

    另一方面,有没有人知道不使用提交按钮就可以提交带有客户端验证的表单?

    2 回复  |  直到 15 年前
        1
  •  0
  •   tpeczek Joshua H    8 年前

    前段时间我写了一篇关于这个问题的文章,您可以将其作为您的情况的起点(您必须修改调用函数的位置,并将正确的元素传递给进程): http://tpeczek.com/2010/04/making-aspnet-mvc-2-client-side.html

        2
  •  1
  •   tvanfosson    15 年前

    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验证插件结合使用,jQuery验证插件使用来自MVCFutures代码的MVC/jqueryglue javascript。我知道这适用于表单提交,无论提交是通过提交按钮还是javascript触发的。我所有的“按钮”实际上都是通过javascript触发表单提交的链接,对我来说很有用。我假设标准MVC验证脚本也是这样,但是没有使用它们。