jquery不引人注目

我试图将unobtrusive.js包含到我的mvc3视图中,但是当我这样做时,我会在视图呈现时出现一堆错误。 例外是在不显眼的脚本中,它在任何地方检查任何与“未定义”的内容,就像这一行一样

if(message !== undefined) //Compare against undefined, because an empty message is legal 

我得到的错误是

Microsoft JScript运行时错误:’undefined’为null或不是对象

这是我的视图的脚本声明。

      

您需要使用jquery.validate.min.js而不是jquery.validate.unobtrusive.js

如果你想:

  • 使用.NET模型validation(数据注释属性)
  • 使用html5数据属性而不是非语义css类

你需要两个:jquery.validate和jquery.validate.unobtrusive

脚本参考:

注意:在此示例中,js文件位于项目/站点的“public”文件夹下,但如果可能,您使用Microsoft的Google CDN地址。

   

模型:

 public class PimpModel { [Required] [StringLength(20)] [DisplayName("Pimp Name")] public string PimpName { get; set; } } 

Web.config设置

      

查看表单代码

 @model SomeProject.Models.PimpModel @{ View.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; Html.EnableUnobtrusiveJavaScript(true); } 

Pimp

@using (Html.BeginForm()) { @Html.ValidationSummary(true)
@Html.ValidationMessageFor(model => model.PimpName)
@Html.LabelFor(model => model.PimpName)
@Html.TextBoxFor(model => model.PimpName)
}

html助手以htmlforms生成数据属性,这些属性由不显眼的库使用,不显眼的库使用validation库中的函数,这一切都是快乐的日子……

确保您的配置中包含以下内容。

     

虽然jQuery是开源的,但是’jquery.validate.unobtrusive.min.js’库是由Microsoft提供的 (如我的js文件顶部所示):

 /* ** Unobtrusive validation support library for jQuery and jQuery Validate ** Copyright (C) Microsoft Corporation. All rights reserved. */ 

尝试替换库以使用新的替换jquery.validate.min.js

一种方法是使用Visual Studio的NuGet包管理器 ,如下所示:

  1. 右键单击Project的References文件夹
  2. 选择“添加库包参考…”
  3. 窗口打开后,从左侧边栏菜单中选择“在线”
  4. 在右上角,输入‘jquery.validate’并按Enter键。
  5. 找到“jQueryvalidation”并单击“安装”按钮。
  6. 更改代码以使用新库名称“jquery.validate.min.js”

我测试了这个并且我的客户端字段validation似乎在Visual Studio中调试时没有烦人的exception。