运行 Visual Studio 2013,我使用 Bootstrap 创建了一个新的 ASP.NET MVC (5) 项目。
但是,我无法让不显眼的客户端验证正常工作。
模型在相关属性上具有 [Required]
属性, View 对于表单中的每个字段具有 ValidationMessageFor...
标记。
但是,提交表单会导致表单在验证消息出现之前回发到服务器。
使用 NuGet,我安装了 jquery.validate
和 jquery.validate.unobtrusive
并将它们添加到 App_Start
中的 jquery 包中。
但它仍然顽固地发回服务器。 F12 开发工具没有显示 JS 错误/警告。
还有其他人遇到过这个问题吗(在 SO 中看不到任何与 MVC 5 特别相关的内容),您有什么想法吗?
最佳答案
我也遇到了同样的问题。将生成的 HTML 与正常运行的网站进行比较,我注意到文档末尾有这样的内容:
<script src="/bundles/jqueryval"></script>
...而 bundle 应该像这样展开:
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>
我查看了 App_Start/BundleConfig.cs,果然,JQuery 验证包尚未在 RegisterBundles
中定义。我必须添加:
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.validate*"));
为什么缺少这个,我不知道。我从一个新的、干净的项目开始。
当您引用未定义的包时,没有编译时错误,这非常糟糕。即使是始终存在的运行时错误也比无声的故障要好。浪费了很多时间!
编辑:结果我的项目中也没有 JQuery 验证脚本。我必须通过 NuGet(“Microsoft JQuery Unobtrusive Validation”)添加它们。
关于jquery - 客户端验证在带有 Bootstrap 的 ASP.NET MVC5 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19737907/