Ответ 1
Я немного смутился, потому что название упоминалось MVC 5.
Искать Ajax
в MVC6 github repo не дает никаких релевантных результатов, но вы можете добавить расширение самостоятельно. Декомпиляция из проекта 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, d необходимо проверить request.Headers
коллекцию для соответствующего заголовка, введя несколько настроек в версию 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 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"