未捕获的TypeError:无法设置undefined的属性'unobtrusive'

时间:2013-07-12 14:03:15

标签: javascript jquery asp.net-mvc jquery-validate unobtrusive-validation

我正在使用最新的MVC框架和捆绑包。

MVC创建的默认“jqueryval”包导致javascript错误

我页面上的脚本输出如此​​

<!-- In head -->
<script src="/Scripts/modernizr-2.6.2.js"></script>
<script src="/Scripts/jquery-2.0.2.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="/Content/Misc.js"></script>


<!-- Bottom of doc -->
<script src="/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>

我的捆绑:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
         "~/Scripts/jquery.validate*",
         "~/Scripts/jquery.unobtrusive*"));

出了什么问题?

2 个答案:

答案 0 :(得分:8)

在您的捆绑包中,您将其设置为包含jquery.validate*jquery.unobtrusive*,这通常会有效。但是如果你看一下你的输出,并不是那里应该存在的所有文件。关键是jquery.unobtrusive.validate需要包含jquery.validate(正如您所看到的那样,您的输出不是)。显然,文件实际上在您的项目中不可用,因此捆绑器找不到。确保项目中包含所有必需的文件,以便捆绑者可以找到并输出它们。

答案 1 :(得分:0)

我发现用完整的js脚本名称替换通配符有效。

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
            "~/Scripts/jquery.validate.min.js",
            "~/Scripts/jquery.validate.unobtrusive.min.js"
            ));