Request.IsAjaxRequest() MVC6 中的替代方案

Request.IsAjaxRequest() alternative in MVC6

我正在尝试 运行 这个例子 Rendering Partial Views using ajax,但我遇到了以下编译错误:

'HttpRequest' 不包含 'IsAjaxRequest' 的定义,并且找不到接受类型 'HttpRequest' 的第一个参数的扩展方法 'IsAjaxRequest'。

    public ActionResult ItemsList(string ID)
    {
        Item item = Service.GetItemById(ID);

        if (Request.IsAjaxRequest())
        {
            return PartialView("viewPath", item);
        }
        else
        {
            return View("viewPath", item);
        }
    }

检查用户代理,如下所示:

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

Ricardo Peres 的回答适用于 ajax 请求,但缺少新的 Fetch 类型。这对我有用:

internal static class RequestHelpers
{
    internal static bool IsAjaxRequest(this HttpRequest request)
    {
        return string.Equals(request.Query["X-Requested-With"], "XMLHttpRequest", StringComparison.Ordinal) ||
            string.Equals(request.Headers["X-Requested-With"], "XMLHttpRequest", StringComparison.Ordinal) ||
            string.Equals(request.Headers["X-Requested-With"], "Fetch", StringComparison.Ordinal);
    }
}