未捕获的类型错误:无法设置属性'不引人注目的'的未定义

Uncaught TypeError: Cannot set property 'unobtrusive' of undefined

本文关键字:属性 未定义 引人注目 设置 类型 错误      更新时间:2023-09-26

我使用的是最新的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*"));

出了什么问题?

在您的捆绑包中,您将其设置为包括jquery.validate*jquery.unobtrusive*,这将正常工作。但是,如果您查看您的输出,并不是所有应该存在的文件都存在。关键是jquery.unobtrusive.validate需要包含jquery.validate(正如您所看到的,这不是您的输出)。显然,这些文件在您的项目中实际上并不可用,因此bundler也找不到。确保您的项目中有所有必要的文件,这样您的bundler就可以找到它们并输出它们。

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

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