¿Cómo saber si la solicitud es ajax en asp.net mvc?


108

alguien, ¿cómo puedo saber si la solicitud es ajax? (Estoy usando jquery para ajax)


2
También puede usar Fiddler para ver las solicitudes. Aprenderá mucho haciendo esto.
CrazyDart

Respuestas:


70

Todas las llamadas AJAX realizadas por jQuery tendrán un encabezado agregado para indicar que es AJAX. El encabezado a verificar es X-Requested-With, y el valor será XMLHttpRequestcuando sea una llamada AJAX.

Tenga en cuenta que las solicitudes AJAX son GET o POST normales, por lo que, a menos que usted (o su biblioteca AJAX como jQuery) esté agregando un encabezado adicional en la solicitud, no hay forma de saber con certeza si es AJAX o no.


3
@Omu: Request.Headers["X-Requested-With"]o similar. Compruebe MSDN. Los encabezados siempre están relacionados con las solicitudes.
Robert Koritnik

179

También está el Request.IsAjaxRequestsi está utilizando una versión posterior de MVC. Ya no tengo la versión 1, así que no puedo decir si está en la versión 1.

Si necesita esta verificación en Global.asax.cs, intente esto: new HttpRequestWrapper(Request).IsAjaxRequest()


1
@BuildStarted Necesito esta verificación en Global.asax.cs para que esto no me ayude
Omu

2
@BuildStarted no está disponible en Application_Error
Omu

1
Si, tienes razón. Es porque está fuera de MVC y no se utiliza HttpRequestBase. No he tenido la necesidad de eso, así que no miré demasiado profundamente. Gracias por el aviso.
Build comenzó el

20
nuevo HttpRequestWrapper (Solicitud) .IsAjaxRequest ();

1
Por cierto: si está dentro del filtro de autorización personalizado, use esto para obtener el método IsAjaxRequest en la Solicitud:
filterContext.HttpContext.Request.IsAjaxRequest

51

Me funciona en ASP.NET MVC 3

if (Request.IsAjaxRequest())
{
     // ajax request handled
}

1
Esto no está disponible en Application_Error
ajbeaven

1
Esto no está disponible en Application_BeginRequest
Varadha31590

En Global.asax:new HttpRequestWrapper(Request).IsAjaxRequest()
Morgs
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.