在开发过程中,有时候需要判断是否是ajax请求,还是页面请求,根据请求的种类不同,来返回不一样值。
在.NET5的MVC6 中已经没有了MVC5中的IsAjaxRequest方法,需要自己扩展,记录一下,以备后用。
在Controller中使用方法:
/// <summary>
/// 判断指定的 HTTP 请求是否为 AJAX 请求。
/// </summary>
///
/// <returns>
/// 如果指定的 HTTP 请求是 AJAX 请求,则为 true;否则为 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;
}在Razor(.cshtml)页面中:
var isAjax = Context.Request.Headers["X-Requested-With"] == "XMLHttpRequest";
返回结果如果为true,即为ajax请求,否则为正常的页面请求。