C# ASP.NET MVC 4 jQuery 验证脚本包不工作
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/14357416/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
ASP.NET MVC 4 jQuery Validation Script Bundle Not Working
提问by Alex Hope O'Connor
I have recentely upgraded a website to use ASP.NET MVC 4 and have the following code to render my jQuery validation bundle.
我最近升级了一个网站以使用 ASP.NET MVC 4,并使用以下代码来呈现我的 jQuery 验证包。
But I get the following error:
但我收到以下错误:
Microsoft JScript runtime error: Object doesn't support property or method 'live'
And this error when clicking in a text box:
单击文本框时出现此错误:
Unhandled exception at line 1234, column 5 in http://localhost:13112/Scripts/jquery.validate.js
0x800a138f - Microsoft JScript runtime error: Unable to get value of the property 'call': object is null or undefined
My bundle code:
我的捆绑代码:
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
My _Layout.cshtml code:
我的 _Layout.cshtml 代码:
@Styles.Render("~/Content/css")
@Styles.Render("~/Content/themes/base/css")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/jqueryui")
@Scripts.Render("~/bundles/modernizr")
Here is my rendered HTML:
这是我渲染的 HTML:
<link href="/Content/site.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.core.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.resizable.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.selectable.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.accordion.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.autocomplete.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.button.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.dialog.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.slider.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.tabs.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.datepicker.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.progressbar.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.theme.css" rel="stylesheet"/>
<script src="/Scripts/jquery-1.9.0.js"></script>
<script src="/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>
<script src="/Scripts/jquery-ui-1.9.2.js"></script>
<script src="/Scripts/modernizr-2.6.2.js"></script>
Can someone point out why this error might be occurring?
有人可以指出为什么会发生此错误吗?
Thanks, Alex.
谢谢,亚历克斯。
采纳答案by Magnus Johansson
The .live method has been deprecated in jQuery v1.7+ and removed in jQuery v1.9+.
.live 方法已在 jQuery v1.7+ 中弃用,并在 jQuery v1.9+ 中删除。
Bugreport: http://bugs.jquery.com/ticket/13213
Explanation:
http://jquery.com/upgrade-guide/1.9/#live-removed
错误报告:http
: //bugs.jquery.com/ticket/13213说明:http:
//jquery.com/upgrade-guide/1.9/#live-removed
.live() removed
The .live() method has been deprecated since jQuery 1.7 and has been removed in 1.9. We recommend upgrading code to use the .on() method instead. To exactly match $("a.foo").live("click", fn), for example, you can write $(document).on("click", "a.foo", fn). For more information, see the .on() documentation. In the meantime, the jQuery Migrate plugin can be used to restore the .live() functionality.
.live() 移除
.live() 方法自 jQuery 1.7 起已被弃用,并已在 1.9 中删除。我们建议升级代码以使用 .on() 方法。例如,要完全匹配 $("a.foo").live("click", fn),您可以编写 $(document).on("click", "a.foo", fn)。有关更多信息,请参阅 .on() 文档。同时,jQuery Migrate 插件可用于恢复 .live() 功能。
How to fix: Download the jquery migrate pluginand add it to your bundling:
如何修复:下载jquery migrate 插件并将其添加到您的捆绑包中:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js",
"~/Scripts/jquery-migrate-{version}.js"));
Update: The migrate plugin is now available from Nuget as well:
更新:迁移插件现在也可以从 Nuget 获得:
PM> Install-Package jQuery.Migrate
PM> 安装包 jQuery.Migrate