关于C#:ASP.NET核心MVC中的request.isajaxrequest()在哪里?

Where is Request.IsAjaxRequest() in Asp.Net Core MVC?

为了进一步了解新的令人兴奋的ASP.NET-5框架,我正在尝试使用新发布的Visual Studio 2015 CTP-6构建一个Web应用程序。

大多数事情看起来都很有希望,但我似乎找不到request.isajaxrequest()——我在老的MVC项目中经常使用的一种功能。

有没有更好的方法可以做到这一点——让他们删除这个方法——或者把它"隐藏"在其他地方?

感谢您对在哪里找到它或做什么的建议!


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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/// <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;
}

由于MVC6 Controller似乎正在使用Microsoft.aspnet.http.httpRequest,因此您必须通过对MVC5版本进行少量调整来检查request.Headers集合中的适当头段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/// <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("request");

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

或直接:

1
var isAjax = request.Headers["X-Requested-With"] =="XMLHttpRequest"


在ASP.NET核心中,可以使用context.request.headers。

1
bool isAjaxCall = Context.Request.Headers["x-requested-with"]=="XMLHttpRequest"