当前位置: 首页 > 面试题库 >

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

林博厚
2023-03-14
问题内容

让我首先说明我尝试过的所有可能的解决方案。我现在jquery-unobtrusive- ajax.min.js在脚本文件夹中,并将其添加到捆绑包中。我尝试在视图页面以及_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")

最后,在web.config中,我将以下键添加到了应用程序设置中:

//Web.config
<appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>

既然已经说了,这就是我的Ajax调用的样子。我试图从一个独立的页面返回一些数据,并用主页中的内容替换它,我想这很简单:

@Ajax.ActionLink("Edit", "Index", "WeeklyTarget",
    new {id = item.WeeklyTargetId},
    new AjaxOptions {HttpMethod = "GET", UpdateTargetId = "hoursEdit", InsertionMode = InsertionMode.Replace})

当从索引视图中单击此操作链接时,将从控制器中调用它:

public ActionResult Index(int? id, IEnumerable<WeeklyTarget> selection )
{            
    if (Request.IsAjaxRequest())
    {
    // return the partial view here
    }
}

但正如我的标题所述,Request.IsAjaxRequest()仍将始终返回false。是什么赋予了???请帮助…我已经用尽了所有我可能想到的想法,调整和解决方法。我什至尝试清除缓存,清理解决方案等。


问题答案:

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

解决方案是添加另一个jquery- migrate-1.2.1.js可以在以下位置找到的jquery库:https : //github.com/jquery/jquery-
migrate#readme
,更具体地说(出于开发目的,而非生产目的)位于:http://code.jquery .com / jquery-
migrate-1.2.1.js
。我保存了该库并将其包含在BundleConfig.cs脚本中,其余的按预期开始工作。我希望这会帮助其他人。



 类似资料:
  • 问题内容: 请弄清楚这一点。该代码正常运行,没有任何异常。 Buttttttttt return语句始终返回false,并且文件未上传到服务器上。请有人帮忙。 供您参考,1)我在办公室网络中。-–>我们需要添加任何代理吗? 请帮忙 问题答案: 确切的失败消息可以通过调用FtpClient#getReplyCode()来找到。从该页面(我的重点): 连接后立即是唯一实时的操作,您需要检查回复代码(因

  • 问题内容: 它们没有正确回答(或根本没有回答)。但是,我不知道为什么总是对我返回false。有人可以告诉我为什么以及如何解决问题?提前致谢。 注意:我所说的活动是包含在中的孩子,这都不是 MAIN 或 LAUNCHER 活动。我不知道这有什么区别。 编辑: 因此应用程序不会进入后台。我希望它进入后台,就像按下硬件HOME一样 问题答案: 我不知道为什么要回去给你。也许您的清单上有些奇怪?无论如何,

  • 在索尼Xperia Z2上的onLocation可用性回调中,FusedLocationProviderClient总是返回false。权限已授予,位置已启用。在位置偏好设置选项使用无线上网,网络和全球定位系统。模拟器,三星,BQ,Nexus,小米一切正常。操作系统版本从6到8。但是在索尼(andorid 6.0.1)我有这个问题。有什么想法吗?我已经结束了 回拨 要求

  • 我尝试使用firebase的isNewUser方法,但它总是返回false。据我所知,它只适用于通过Firebase控制台创建的帐户,这正是我的情况。只要用户点击“连接”并且他的信息正确,该函数就会被调用。 谢谢你的帮助!

  • 我只是想确定用户是否输入了YES或NO值(尽管不考虑大写,因此)。但是,无论我输入是或否,do while都不会中断,例如。 我正在寻找“当输入值不等于‘是’或‘否’时,再次请求数据”的行为。然而,我的代码建议“不管键入什么,让我们只是为了好玩而继续循环…”我哪里出错了,斯塔克?谢谢

  • 问题内容: 我正在使用Asp.net MVC3,并尝试在服务器上做一个简单的Ajax发布,它返回部分视图并在搜索过程中更新我的项目列表。 Ajax成功调用服务器,服务器通过发送部分视图进行响应。但是部分视图始终在新页面中呈现。我发现这是因为它不知道即将到来的ajax调用,因此它呈现了一个新页面。 我的控制器代码非常简单: 但是无论如何,Request.IsAjaxRequest()始终返回fals