jquery不引人注目

时间:2011-07-29 20:49:59

标签: jquery unobtrusive-javascript

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

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

我得到的错误是

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

这是我的观点的脚本声明。

<script src="../../Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.14.custom.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.11.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script>
<link href="@Url.Content("~/Content/themes/base/jquery.ui.autocomplete.css")" rel="stylesheet" type="text/css" /> 

4 个答案:

答案 0 :(得分:9)

您需要使用jquery.validate.min.js代替jquery.validate.unobtrusive.js

答案 1 :(得分:7)

如果你想:

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

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

脚本参考:

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

<script src="@Url.Content("~/public/js/libs/jquery.validate.min.js")"></script>
<script src="@Url.Content("~/public/js/libs/jquery.validate.unobtrusive.min.js")"></script>

<强>型号:

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

Web.config设置

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

查看表单代码

@model SomeProject.Models.PimpModel
@{
  View.Title = "Index";
  Layout = "~/Views/Shared/_Layout.cshtml";
  Html.EnableUnobtrusiveJavaScript(true);
}
<h2>Pimp</h2>
@using (Html.BeginForm()) {
  @Html.ValidationSummary(true)
  <fieldset>
  @Html.ValidationMessageFor(model => model.PimpName)
  <div class="editor-label">
    @Html.LabelFor(model => model.PimpName)
  </div>
  <div class="editor-field">
    @Html.TextBoxFor(model => model.PimpName)
  </div>
  <input type="submit" value="Save"></fieldset>
}

html帮助器以html形式生成数据属性,这些属性由不显眼的库使用,不显眼的库使用验证库中的函数,这一切都是快乐的日子......

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

虽然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. 右键点击项目的 参考 文件夹
  2.   
  3. 选择 '添加库包参考...'
  4.   
  5. 当窗口打开时,从左侧边栏菜单中选择 '在线'
  6.   
  7. 在右上角,输入 'jquery.validate' 并按Enter键。
  8.   
  9. 找到 'jQuery验证' ,然后点击 '安装' 按钮。
  10.   
  11. 更改您的代码以使用新库名 'jquery.validate.min.js'
  12.   

我测试了这个并且在Visual Studio中进行调试时,我的客户端字段验证似乎都没有烦人的异常。

相关问题