使用 jQuery 1.10.2 在 MVC 4 中进行客户端验证

Posted

技术标签:

【中文标题】使用 jQuery 1.10.2 在 MVC 4 中进行客户端验证【英文标题】:Client side validation in MVC 4 with jQuery 1.10.2 【发布时间】:2013-12-14 02:46:34 【问题描述】:

我正在构建一个基于ASP.NET MVC 4 的应用程序,并尝试在可能的情况下遵循标准互联网模板中的代码。

昨天我开始实现我的表单并注意到我没有得到客户端验证并且内容总是被提交。

我这样渲染表单:

@using (html.BeginForm(new  ReturnUrl = ViewBag.ReturnUrl ))

    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

        <ul>
            <li>
                @Html.LabelFor(m => m.Title)
                <br />
                @Html.TextBoxFor(m => m.Title)
                <br />
                @Html.ValidationMessageFor(m => m.Title)
            </li>
            <li>
            //more list items here

因为我没有从调试开始,所以我将脚本渲染如下:

@Scripts.Render("~/Scripts/jquery-1.10.2.min.js")
@Scripts.Render("~/Scripts/jquery.validate.min.js")
@Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.min.js")
@Scripts.Render("~/Scripts/jquery.validate.unobtrusive.min.js")

然后,在 firebug 中,当我提交不正确的表单时,我收到以下错误:

TypeError: a(...).live is not a function

然后我看到了这个 - Also bear in mind that in jQuery 1.9 the .live() method has been removed which was one of the breaking changes 另一个 SO 问题 here。所以我决定尝试将 jQuery 版本更改为:

@Scripts.Render("~/Scripts/jquery-1.7.1.min.js")

验证开始正常工作。

一些进一步的研究表明,大多数人制作了他们自定义的jQuery.val* 脚本,以便使其与新版本的jQuery 一起工作。

我的问题是 - 是否有用于客户端验证的标准打包/捆绑包,我可以将其添加到我的项目中并与较新版本的 jQuery 一起使用(我现在使用的是 1.10.2)?我是否必须将jQuery 1.7.* 用于我的客户端验证部分,或者现在MS 支持其他东西(例如使用标准模板的一部分knockout.js 进行验证)或者甚至可能是现在用于的其他js 库MVC 项目中的客户端验证?

【问题讨论】:

【参考方案1】:

我在 1.10.2 中遇到了类似的 jQuery 验证问题(我会收到“Uncaught SyntaxError: Unexpected token u”)。我添加了 jQuery.Migrate 包,它修复了它。我相信错误来自 parseJSON 的变化。

【讨论】:

以上是关于使用 jQuery 1.10.2 在 MVC 4 中进行客户端验证的主要内容,如果未能解决你的问题,请参考以下文章

使用jquery mvc 4上传pdf文件

使用jquery ui在mvc 4中打开带有参数的模态窗口

在 jQuery 弹出窗口或 MVC 4 的警报中显示错误消息

在 asp.net mvc 4 中使用带有部分视图的 jQuery

让 MVC 4 验证 jquery 手风琴表单的所有部分

在 MVC 4.0 站点中升级 jQuery 1.9 时不显眼的 jQuery 失败