JQuery和JQuery.Validate";无法获取属性';呼叫';“未定义或空引用的”;错误

JQuery和JQuery.Validate";无法获取属性';呼叫';“未定义或空引用的”;错误,jquery,asp.net-mvc,jquery-validate,unobtrusive-validation,Jquery,Asp.net Mvc,Jquery Validate,Unobtrusive Validation,我有一个ASP.NET MVC 5应用程序,它使用JQuery v1.10.2和JQuery.Validate v1.13.1。当通过单击“提交”验证表单或在失去焦点后验证输入时,我在Chrome中遇到以下错误: Internet Explorer也给了我同样的错误 我使用bundle系统将不同的脚本捆绑在一起,并在另一个项目中进行维护(该项目在应用程序之间共享,使代码可以在一个地方进行维护)。我的包如下所示: BundleTable.Bundles.Add(new ScriptBundle(

我有一个ASP.NET MVC 5应用程序,它使用JQuery v1.10.2和JQuery.Validate v1.13.1。当通过单击“提交”验证表单或在失去焦点后验证输入时,我在Chrome中遇到以下错误:

Internet Explorer也给了我同样的错误

我使用bundle系统将不同的脚本捆绑在一起,并在另一个项目中进行维护(该项目在应用程序之间共享,使代码可以在一个地方进行维护)。我的包如下所示:

BundleTable.Bundles.Add(new ScriptBundle(BundleNames.JavaScript.JQuery).Include(
                    string.Format("~/{0}/jquery-1.10.2.js",_JavaScriptFolder""),
                    string.Format("~/{0}/jquery-1.10.2.min.js",_JavaScriptFolder),
                    string.Format("~/{0}/jquery-migrate-1.2.1.js",_JavaScriptFolder),
                    string.Format("~/{0}/jquery-migrate-1.2.1.min.js",_JavaScriptFolder)));

BundleTable.Bundles.Add(new ScriptBundle(BundleNames.JavaScript.JQueryValidation).Include(
                string.Format("~/{0}/jquery.validate.js",_JavaScriptFolder),
                string.Format("~/{0}/jquery.validate.min.js",_JavaScriptFolder),
                string.Format("~/{0}/jquery.validate.unobtrusive.js",_JavaScriptFolder),
                string.Format("~/{0}/jquery.validate.unobtrusive.min.js",_JavaScriptFolder),
                string.Format("~/{0}/jquery.validate-vsdoc.js", _JavaScriptFolder)));
它们被包含到应用程序布局视图中,如下所示:

    @Scripts.Render(Ebi.Mvc.Library.Bundling.BundleNames.JavaScript.JQuery)    
    @Scripts.Render(Ebi.Mvc.Library.Bundling.BundleNames.JavaScript.JQueryValidation)
当使用JQuery v1.9.1和JQuery.Validate v1.10.0时,此设置运行良好,但我必须更新JQuery.Validate,并且我还决定更新JQuery(由于IE兼容性原因,我避免使用2.X),但从那时起,我一直被此错误困扰。我甚至试着换回原来的版本,但奇怪的是错误仍然在发生

我已经查看了的答案,并使用NuGet package manager安装了JQuery迁移插件,并将其添加到JQuery捆绑包中,但似乎所做的只是在加载包含表单的页面时停止抛出错误

我还要补充一点,在抛出错误之后,验证仍然会在表单上进行(例如,将验证类添加到输入并显示输入错误)


有人能帮我找出是什么导致了这个错误吗

在我的场景中,Sparky所说的关于使用同一脚本的缩小版和未缩小版的内容实际上导致了这个问题

为了解决这个问题,我将捆绑包分为小型和非小型两个版本,如果需要,这两种类型都可以在我的应用程序中使用

BundleTable.Bundles.Add(new ScriptBundle(BundleNames.JavaScript.JQuery).Include(
                        string.Format("~/{0}/jquery-1.9.1.js",_JavaScriptFolder)));

BundleTable.Bundles.Add(new ScriptBundle(BundleNames.JavaScript.JQueryMin).Include(
                        string.Format("~/{0}/jquery-1.9.1.min.js", _JavaScriptFolder)));

BundleTable.Bundles.Add(new ScriptBundle(BundleNames.JavaScript.JQueryValidation).Include(
                        string.Format("~/{0}/jquery.validate.js",_JavaScriptFolder),
                        string.Format("~/{0}/jquery.validate.unobtrusive.js",_JavaScriptFolder)));

BundleTable.Bundles.Add(new ScriptBundle(BundleNames.JavaScript.JQueryValidationMin).Include(
                        string.Format("~/{0}/jquery.validate.min.js",_JavaScriptFolder),
                        string.Format("~/{0}/jquery.validate.unobtrusive.min.js", _JavaScriptFolder)));
由于这样做,我能够更新JQuery.Validate插件,而不会出现错误。最后我甚至不必使用JQuery迁移插件

所以我想,如果有人遇到这个错误,那么值得检查一下,您是否同时引用了JQuery和JQuery验证脚本的缩小版和未缩小版


在我这一边,我仍然没有答案的令人困惑的一点是,捆绑包(如我问题描述中所编码的)以这种方式设置了一年多,从未发生过错误,并且有多个应用程序使用过它,在我尝试更新插件之前…

应该将精度添加到这些解决方案中,因为它们不适用于MVC4。面对这种情况,我尝试了这些答案,但没有成功。当我使用Nuget添加这些jquery迁移文件,并在html页面中直接添加这些文件的引用,或在BundleConfig中添加到jquery bundle时,没有任何成功。经过几个小时的尝试,我终于明白,在给定页面或给定布局的头部使用bundle比在html文档中使用已知文件的引用要好。我刚刚将样式和javascript文件的链接更改为下面的代码,它们生成了页面所需的链接

   @Scripts.Render("~/bundles/jquery")
  @Scripts.Render("~/bundles/jqueryui")
   <script type="text/javascript" src="~/Scripts/jquery.validate-vsdoc.js"></script>
   @Scripts.Render("~/bundles/jqueryval") 
@Scripts.Render(“~/bundles/jquery”)
@Scripts.Render(“~/bundles/jqueryui”)
@Scripts.Render(“~/bundles/jqueryval”)
这样做,我就成功了,不再犯这样的错误


如果未添加到上述jqueryval,则无法执行验证,因为我没有使用以下引用,已通过添加解决了此问题:

<script type="text/javascript" src="jquery-migrate-1.2.1.min.js"></script>


您从未提到过
不引人注目的验证
插件,该插件通常用于在ASP中促进jQuery验证的初始化。您不应该同时使用每个脚本的缩小版和未缩小版。。。只需使用其中一个。谢谢你对缩小版和未缩小版的建议,我会记下来的。关于
不引人注目的验证
插件,它使用哪个.js文件?我有一个
jquery.unobtrusive ajax.js
及其简化版本,还有我上面问题中bundles代码片段中列出的
jquery.validate.unobtrusive.js
如果您意外地将“jquery.validate vsdoc.js”与常规验证文件一起包含,同样的问题也会出现。