ASP.NET MVC中不引人注意的客户端验证仍然提交表单

时间:2013-07-08 11:51:25

标签: javascript asp.net-mvc asp.net-mvc-4 unobtrusive-validation

我正在使用ASP MVC 4并且我同时启用了ClientValidationEnabled和UnobtrusiveJavaScriptEnabled appSettings,但是当我提交具有不显眼的验证数据属性的表单时,即使它无效也会提交。 出现验证消息但表单仍然已提交。

我的浏览器已启用JavaScript。

2 个答案:

答案 0 :(得分:7)

确保您有以下图书馆链接

<script src="~/Scripts/jquery.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script>

检查您的配置。这两个应该如下所示:

<appSettings>
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
</appSettings>

不要忘记添加:

@Html.ValidationMessageFor(m => m.FieldToValidate)

答案 1 :(得分:5)

对于主页面中的MVC4,请添加以下行

@Scripts.Render("~/bundles/jqueryval")

并确保在下面的bundles.config行中存在。

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/Scripts/jquery.unobtrusive*",
                    "~/Scripts/jquery.validate*"));

一旦添加了jquery.unobtrusive,您将遇到以下错误。

live()函数在jquery 1.9中不再可用,已被弃用。

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

为了解决此问题,您可以通过.On手动替换.live或仅添加nuget的测试版

Install-Package Microsoft.jQuery.Unobtrusive.Ajax -Pre