在升级到JQuery 2.0.1之后,Ajax.ActionLink生成的ASP.NET代码停止工作

时间:2013-05-29 10:49:49

标签: javascript jquery asp.net-mvc-3 razor jquery-2.0

我有一个ASP.NET MVC3应用程序,我已升级到JQuery 2.0.1,不幸的是,它有一些令人不快的副作用。 (More info here

目前我只有一个未解决的问题:@ Ajax.ActionLink生成的HTML链接不再调用相应的js代码,而是被浏览器视为常规链接。

相关页面包含以下js文件:

<script src="/Scripts/jquery-2.0.1.min.js" type="text/javascript"></script>
<script src="/Scripts/modernizr-2.6.2.js" type="text/javascript"></script>
<script src="/Scripts/jquery-ui-1.10.3.min.js" type="text/javascript"></script>

<script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript">script>
<script src="~/Scripts/MicrosoftAjax.debug.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcAjax.debug.js" type="text/javascript"></script>
<script src="/Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript">   </script>

我必须手动更新jquery.unobtrusive-ajax.min.js文件以解决其他问题(将live替换为on)。

Ajax.ActionLink如下所示:

@Ajax.ActionLink("Delete", "Delete", "InputResources",
                new { id = Model[i].ID },
                new AjaxOptions
                {
                    HttpMethod = "DELETE",
                    Confirm = "Are you sure you want to delete?",
                    OnComplete = "window.location.href='/Projects/InputResources/" + ViewBag.ProjectID + "'"
                })

生成的HTML似乎看起来很合理:

<a href="/InputResources/Delete/5" data-ajax-method="DELETE" data-ajax-confirm="Are you sure you want to delete?" data-ajax-complete="window.location.href='/Projects/InputResources/2'" data-ajax="true">Delete</a>

有人可以推荐一些js文件以及我需要修改的方法才能让这个链接再次正常工作吗?

1 个答案:

答案 0 :(得分:1)

以下是为我解决的问题:

这会将您的jquery验证脚本更新为最新版本:

PM> Install-Package jQuery.Validation 

这会将您的jquery unobtrusive验证脚本更新为最新版本:

PM> Install-Package jQuery.Ajax.Unobtrusive

确保在jquery库之后它们都包含在你的页面中,  如果你不这样做,它将无法工作。