我正在尝试将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" />
答案 0 :(得分:9)
您需要使用jquery.validate.min.js
代替jquery.validate.unobtrusive.js
答案 1 :(得分:7)
如果你想:
你需要两个: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包管理器 以下内容:
- 右键点击项目的 参考 文件夹
- 选择 '添加库包参考...'
- 当窗口打开时,从左侧边栏菜单中选择 '在线' 。
- 在右上角,输入 'jquery.validate' 并按Enter键。
- 找到 'jQuery验证' ,然后点击 '安装' 按钮。
- 更改您的代码以使用新库名 'jquery.validate.min.js'
醇>
我测试了这个并且在Visual Studio中进行调试时,我的客户端字段验证似乎都没有烦人的异常。