在开发过程中,有时候需要判断是否是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请求,否则为正常的页面请求。