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

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

大多数东西看起来非常有前途,但我似乎无法找到Request.IsAjaxRequest() - 这是我在较老的MVC项目中经常使用的功能。

有没有更好的方法来做到这一点 - 这使得他们删除了这种方法 - 或者它在其他地方“隐藏”了吗?

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


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

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

/// <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集合以获取适当的标头:

/// <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;
}

或直接:

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

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

bool isAjaxCall = Context.Request.Headers["x-requested-with"]=="XMLHttpRequest"
链接地址: http://www.djcxy.com/p/21291.html

上一篇: Where is Request.IsAjaxRequest() in Asp.Net Core MVC?

下一篇: How to run HelloWeb from asp.net vnext on a Mac?