首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Request.IsAjaxRequest()在Asp.Net Core中在哪里?

Request.IsAjaxRequest()在Asp.Net Core中在哪里?
EN

Stack Overflow用户
提问于 2015-03-26 15:15:13
回答 5查看 45.4K关注 0票数 86

为了了解更多关于新的令人兴奋的Asp.Net-5框架的信息,我尝试使用新发布的Visual 2015 CTP-6构建一个web应用程序。

大多数事情看起来都很有希望,但我似乎找不到Request.IsAjaxRequest() --这是我在较旧的MVC项目中经常使用的功能。

是否有更好的方法来做到这一点--让他们删除这个方法--或者它是否“隐藏”在其他地方?

谢谢你对在哪里找到它或者做些什么的建议!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-03-26 15:56:26

我有点困惑,因为标题提到了MVC 5。

搜索在MVC6中,github回购没有给出任何相关的结果,但是您可以自己添加扩展。来自MVC5项目的反编译给出了非常简单的代码:

代码语言:javascript
复制
/// <summary>
/// Determines whether the specified HTTP request is an AJAX request.
/// </summary>
/// 
/// <returns>
/// true if the specified HTTP request is an AJAX request; otherwise, false.
/// </returns>
/// <param name="request">The HTTP request.</param><exception cref="T:System.ArgumentNullException">The <paramref name="request"/> parameter is null (Nothing in Visual Basic).</exception>
public static bool IsAjaxRequest(this HttpRequestBase request)
{
  if (request == null)
    throw new ArgumentNullException(nameof(request));
  if (request["X-Requested-With"] == "XMLHttpRequest")
    return true;
  if (request.Headers != null)
    return request.Headers["X-Requested-With"] == "XMLHttpRequest";
  return false;
}

由于Controller似乎在使用Microsoft.AspNet.Http.HttpRequest,因此您必须通过对MVC5版本进行很少的调整来检查集合是否有适当的标题:

代码语言:javascript
复制
/// <summary>
/// Determines whether the specified HTTP request is an AJAX request.
/// </summary>
/// 
/// <returns>
/// true if the specified HTTP request is an AJAX request; otherwise, false.
/// </returns>
/// <param name="request">The HTTP request.</param><exception cref="T:System.ArgumentNullException">The <paramref name="request"/> parameter is null (Nothing in Visual Basic).</exception>
public static bool IsAjaxRequest(this HttpRequest request)
{
  if (request == null)
    throw new ArgumentNullException(nameof(request));

  if (request.Headers != null)
    return request.Headers["X-Requested-With"] == "XMLHttpRequest";
  return false;
}

或直接:

代码语言:javascript
复制
var isAjax = request.Headers["X-Requested-With"] == "XMLHttpRequest"
票数 124
EN

Stack Overflow用户

发布于 2017-03-15 03:43:51

在asp.net核心中,您可以使用Context.Request.Headers。

代码语言:javascript
复制
bool isAjaxCall = Context.Request.Headers["x-requested-with"]=="XMLHttpRequest";
票数 39
EN

Stack Overflow用户

发布于 2019-10-23 06:33:51

对于那些从事ASP.Net核心工作的人来说

代码语言:javascript
复制
HttpContext.Request.Headers["X-Requested-With"] == "XMLHttpRequest";

示例

Controller.cs

代码语言:javascript
复制
bool isAjax = HttpContext.Request.Headers["X-Requested-With"] == "XMLHttpRequest";

if (isAjax)
   return Json(new { redirectTo = Url.Action("Index", "ControllerAction") });
else
   return RedirectToAction("Index", "ControllerAction");
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29282190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档