无法获取属性'unobtrusive'的值:object为null或undefined

时间:2013-06-06 16:42:43

标签: c# asp.net-mvc jquery

当我运行我的代码时,我得到了错误:

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 

5 个答案:

答案 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>