当我运行我的代码时,我得到了错误:
Unable to get value of the property 'unobtrusive': object is null or undefined
这是正常的,但我正在添加我需要的所有jquery内容:
jquery.validate-vsdoc.js
jquery.validate.js
jquery.validate.min.js
jquery.validate.unobtrusive.js
jquery.validate.unobtrusive.min.js
jquery.unobtrusive-ajax.js
jquery.unobtrusive-ajax.min.js
我在主表单上加载:
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryui")
@Scripts.Render("~/bundles/jqueryval")
我的捆绑配置包含:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
"~/Scripts/jquery-ui-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
我的Script
文件夹中包含所有相关文件。
为什么我收到此错误? 评论你是否需要查看任何文件,我很乐意发布
编辑:
加载脚本(我已检查) 这一行给出了错误:
jQuery.validator.unobtrusive.prototype.parse.call(this, selector);
ERROR:
SCRIPT5007: Unable to get value of the property 'unobtrusive': object is null or undefined
答案 0 :(得分:8)
发现问题。
我有另一个局部视图,它添加了一个脚本“〜/ Scripts / jquery ...”
所以我在主视图中有了这个包,而这个包在一个总是呈现的菜单的一部分中。 似乎只是考虑了最后一个,并且没有在那里添加Unobtrusive。 从局部视图中删除它并只在主视图中保留它解决了它。
感谢猜测。
答案 1 :(得分:3)
我得到了另一个,更多的骨头理由。我在页面中的jquery.validate.min.js之前有jquery.validate.unobtrusive.js。
简单地移动验证以上验证validate.unobtrusive修复了问题。
答案 2 :(得分:2)
我收到此错误消息的原因不同,所以我会分享。
我们使用Microsoft的CDN来提供jquery.validate.min.js
文件,而我们的客户使用的是黑名单上有asp.netcdn.com
的过滤器,阻止其加载。
因此,让客户端将CDN列入白名单或更改CDN可以解决问题。真的,我们应该有一个后备,所以如果CDN不可用,它可以提供本地版本,但我们还没有实现。
答案 3 :(得分:0)
我也处理了这个问题。尽管同时安装了Unobtrusive的nuget程序包和Unobtrusive验证,我仍然收到错误消息。
在我的情况下,这是因为我忘记了包含必需的库之一。事实证明jquery.validate.unobtrusive.min.js取决于jquery.validate.min.js。因此,其他包含的脚本文件应为:
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script>
答案 4 :(得分:-2)
Code Junkie的意思是说你在web.config中添加了不显眼的启用javascript的密钥。
您需要在appSettings中添加:
<appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>