Solución:
Me confundí un poco, porque el título mencionaba MVC 5.
Buscar Ajax
en el repositorio de MVC6 github no da ningún resultado relevante, pero puede agregar la extensión usted mismo. La descompilación del proyecto MVC5 proporciona un código bastante sencillo:
/// <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;
}
Desde MVC6 Controller
parece estar usando Microsoft.AspNet.Http.HttpRequest, tendrías que comprobar request.Headers
colección para el encabezado apropiado mediante la introducción de algunos ajustes a la versión 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(nameof(request));
if (request.Headers != null)
return request.Headers["X-Requested-With"] == "XMLHttpRequest";
return false;
}
o directamente:
var isAjax = request.Headers["X-Requested-With"] == "XMLHttpRequest"
en el núcleo de asp.net, puede utilizar Context.Request.Headers.
bool isAjaxCall = Context.Request.Headers["x-requested-with"]=="XMLHttpRequest"
Para aquellos que están trabajando en ASP.Net Core
HttpContext.Request.Headers["X-Requested-With"] == "XMLHttpRequest";
Ejemplo
Controller.cs
bool isAjax = HttpContext.Request.Headers["X-Requested-With"] == "XMLHttpRequest";
if (isAjax)
return Json(new { redirectTo = Url.Action("Index", "ControllerAction") });
else
return RedirectToAction("Index", "ControllerAction");
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)