我在mvc 4中的表单没有在客户端进行验证。
验证仅在服务器端发生。
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Phone)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Phone)
@Html.ValidationMessageFor(model => model.Phone)
</div>
<p>
<input type="submit" value="Send" />
</p>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
捆绑代码是:
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
我还检查了web.config设置:
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
我使用的模型是:
public class ContactUs
{
[Required]
public string Name { get; set; }
[Required]
public string Phone { get; set; }
}
该页面位于_Layout文件中。 脚本版本: jquery 2.0.3s和 jQuery Validation Plugin 1.11.1
所有脚本都在工作并存在于页面的源代码中。
可能是什么问题?
答案 0 :(得分:1)
我添加了CDN脚本http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.min.js的链接 现在它正在发挥作用。
在查看我的项目历史后,我发现由于某种原因,当我更新我的NuGet包时,它从我的项目中删除了这个脚本,然后我的客户端验证停止工作。
我尝试使用NuGet软件包添加此脚本,例如“Microsoft jQuery Unobtrusive Validation”或“Microsoft jQuery Unobtrusive Ajax”以及更多这样的软件包,它没有解决问题所以我添加了CDN脚本并且它有效。
答案 1 :(得分:0)
您可能需要告知验证摘要不要排除属性错误:
@Html.ValidationSummary(false)
答案 2 :(得分:0)
今天我遇到了这个问题,我已经在bundle / jqueryval上放了3个文件:
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate.min.js",
"~/Scripts/jquery.validate.unobtrusive.min.js"));