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

Ido*_*Ran 2 javascript asp.net-mvc unobtrusive-validation asp.net-mvc-4

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

当然,我的浏览器启用了JavaScript.

And*_*rei 7

请确保您已关联以下库

<script src="~/Scripts/jquery.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script>
Run Code Online (Sandbox Code Playgroud)

检查您的配置.这两个应该如下:

<appSettings>
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
</appSettings>
Run Code Online (Sandbox Code Playgroud)

别忘了添加:

@Html.ValidationMessageFor(m => m.FieldToValidate)
Run Code Online (Sandbox Code Playgroud)


swa*_*eel 5

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

@Scripts.Render("~/bundles/jqueryval")
Run Code Online (Sandbox Code Playgroud)

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

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/Scripts/jquery.unobtrusive*",
                    "~/Scripts/jquery.validate*"));
Run Code Online (Sandbox Code Playgroud)

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

在jquery 1.9中不再提供live()函数,该函数已被弃用.

TypeError: $(…).live is not a function
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,你可以用.On手动替换.live,或者只是从nuget添加beta版本

Install-Package Microsoft.jQuery.Unobtrusive.Ajax -Pre 
Run Code Online (Sandbox Code Playgroud)