【问题标题】:ASP.MVC3 is client side validation enabled by default?ASP.MVC3 默认启用客户端验证吗?
【发布时间】:2011-07-09 04:55:47
【问题描述】:

在我的布局页面中,我有以下链接到验证 Javascript 文件,

 <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"> </script>
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")"type="text/javascript"> </script>
         <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")"type="text/javascript"></script>

我的实体装饰有验证属性,例如

[Required(ErrorMessage ="Please enter a customer name")]
    public string CustomerName { get; set; }

然后在我看来,我在更新字段之后指定了验证消息,如下所示

<div class="label-for">@Html.LabelFor(model => model.CustomerName)</div>
<div class="editor">@Html.EditorFor(model => model.CustomerName)</div>
@Html.ValidationMessageFor(model => model.CustomerName) 

验证正在工作,但它不在客户端,我理解的方式是,当其中一个字段在切换到另一个字段后留空时,应该显示错误消息,是否需要其他任何东西来获取客户端验证有效吗?

【问题讨论】:

  • 您的 web.config 文件中是否将 appsettings “ClientValidationEnabled”和“UnobtrusiveJavaScriptEnabled”设置为 true? (它们应该是默认的)。
  • 我在全局 ASAX 文件的 start 方法中将这些设置为 true,但是我会尝试在 web config 中执行 tis。
  • 是的,它们已在网络配置中启用,正如您正确声明的那样,这必须是默认设置。
  • 嗯,好的。那么它应该工作。你能尝试一个非常简单的例子吗?
  • 不确定我能做些什么与我上面所做的不同?我向实体属性添加了所需的属性,验证消息被添加到视图中,脚本被添加到布局页面的头部。验证消息仅在单击保存按钮后显示??

标签: asp.net-mvc-3 client-side-validation


【解决方案1】:

IIRC jqueryjquery.validate 版本之间存在一些不兼容性。您似乎使用的是旧版本的 jquery 1.4.4。尝试使用最新的更新。例如,安装 ASP.NET MVC 3 Tools Update 并在 Visual Studio 中创建一个新的 ASP.NET MVC 项目,这将为您提供以下脚本的正确版本:jquery、jquery.validate 和 jquery.validate.unobtrusive。

【讨论】:

    【解决方案2】:

    可能是这样:确保在您的 web.config 文件中,将“ClientValidationEnabled”设置为“True”

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

    注意:在 MVC3 Web 项目中,有两个 web.config 文件,一个位于“View”文件夹下,另一个位于根 Web 项目下。确保根目录中的一个不会覆盖另一个。

    【讨论】:

      【解决方案3】:

      jQuery 验证与您的验证机制无关。也许 Microsoft.Ajax.Validation 应该是负责任的。但是要使用 jquery.validation,您应该编写代码。就这样。它不会做任何开箱即用的事情。

      【讨论】:

      • 奇怪,就像 Steve Sandersons Pro Asp.Net MVC3 框架书中所说的“MVC 客户端验证基于 Jquery,并且在添加相关脚本时默认启用”
      • 嗯,我不知道那本书,我自己也没有亲眼看到它。看来这只是一个理论。
      • -1,您可以将 jquery 验证与 asp.net mvc 中的内置验证一起使用。无需手动编写客户端验证代码。
      • -1 因为我在 MVC3 中使用过它并且评论完全错误。你确实使用了 jQuery,并且一些 DataAnnotations 已经内置了验证器。
      猜你喜欢
      • 2015-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-01
      • 2015-06-06
      • 2014-08-31
      • 2017-04-04
      • 2012-05-26
      相关资源
      最近更新 更多