Saltar al contenido

¿Dónde está Request.IsAjaxRequest () en Asp.Net Core MVC?

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)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *