【问题标题】:Unobtrusive Client Validation in ASP.NET MVC Still Submit FormASP.NET MVC 中不显眼的客户端验证仍然提交表单
【发布时间】:2013-07-08 11:51:25
【问题描述】:

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

在我的浏览器中启用了 JavaScript。

【问题讨论】:

  • 检查是否缺少某些脚本。
  • 如果没有更多信息,很难帮助您。检查你没有另一个 javascript 提交表单,你没有 javascript 库冲突或者@AdrianoSilva 说你没有丢失脚本。

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


【解决方案1】:

确保您已链接以下库

<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)

【讨论】:

    【解决方案2】:

    对于母版页中的 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
    

    为了解决这个问题,您可以将 .live 替换为 .On 或仅添加来自 nuget 的 beta 版本

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 1970-01-01
      • 2011-08-11
      相关资源
      最近更新 更多