Jquery IsAjaxRequest()在MVC4中始终返回false,在SO中尝试了所有建议,等等

Jquery IsAjaxRequest()在MVC4中始终返回false,在SO中尝试了所有建议,等等,jquery,ajax,asp.net-mvc,asp.net-mvc-4,razor,Jquery,Ajax,Asp.net Mvc,Asp.net Mvc 4,Razor,让我先解释一下我尝试过的所有可能的解决方案。现在,我的脚本文件夹中有了jquery unobtrusive ajax.min.js,并将其添加到了一个包中。我已经尝试在查看页面本身以及\u Layout.cshtml页面上引用它,这就是我目前拥有捆绑包的方式: //BundleConfig.cs bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Scripts/jquery-1.10.2.min.js

让我先解释一下我尝试过的所有可能的解决方案。现在,我的脚本文件夹中有了
jquery unobtrusive ajax.min.js
,并将其添加到了一个包中。我已经尝试在查看页面本身以及
\u Layout.cshtml
页面上引用它,这就是我目前拥有捆绑包的方式:

//BundleConfig.cs
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
            "~/Scripts/jquery-1.10.2.min.js",
            "~/Scripts/modernizr-2.6.2.js",
            "~/Scripts/jquery.validate.min.js",
            "~/Scripts/jquery.unobtrusive-ajax.min.js"));
此捆绑包在主布局视图页面中引用,我的其他所有视图均源自此页面:

//_Layout.cshtml (at bottom of view, right before hitting </body></html>)
@Scripts.Render("~/bundles/jquery")
从索引视图中单击此操作链接时,将从控制器调用此操作链接:

public ActionResult Index(int? id, IEnumerable<WeeklyTarget> selection )
{            
    if (Request.IsAjaxRequest())
    {
    // return the partial view here
    }
}
public ActionResult索引(int?id,IEnumerable selection)
{            
if(Request.IsAjaxRequest())
{
//在这里返回局部视图
}
}

但正如我在标题中所述,
Request.IsAjaxRequest()
仍将始终返回false。什么给了???请帮忙。。。我已经用尽了我可能想到的所有想法、调整和解决方法。我甚至试着清理我的缓存、清洗液等等。

所以。。。问题是
jquery unobtrusive ajax.min.js
引用了不推荐使用的jquery方法
.live()
。在调试时,我能够将此视为chrome开发人员控制台中抛出的错误。只有使用超过1.9的jQuery版本(我使用的是1.10.2),才会发生这种情况。它在1.7中被弃用,但在1.9中被完全删除


解决方案是添加另一个jquery库
jquery-migrate-1.2.1.js
,可以在这里找到:更具体地说(用于开发,而不是生产目的)。我将这个库保存并包含在我的
BundleConfig.cs
脚本中,其余的开始按预期工作。我希望这能帮助其他人。

当您错过-jquery.unobtrusive-ajax.min.js时,会出现ajax请求无法与Mistrosoft helper方法完美同步的问题,如IsAjaxRequest()。您可以安装它: 1.打开nuget数据包管理器 2.运行命令安装包Microsoft.jQuery.Unobtrusive.Ajax

可在此处找到原始信息:


祝你今夏阳光灿烂

如果使用AngularJs和$resource,你可能需要添加此项

myAppModule.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
}]);

请参见

它应该可以工作。在chrome或您使用的浏览器中。检查生成的源文件并检查是否可以在生成的htmlIt中看到
jquery.unobtrusive ajax.min.js
文件,但是我注意到
jquery.unobtrusive ajax.min.js
仍然引用了不推荐使用的jquery方法
.live()
,通过进一步研究,该方法在jquery 1.9中已被删除。也许如果我解决了这个错误,它会工作。。。隐马尔可夫模型
public ActionResult Index(int? id, IEnumerable<WeeklyTarget> selection )
{            
    if (Request.IsAjaxRequest())
    {
    // return the partial view here
    }
}
myAppModule.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
}]);