comment savoir si la demande est ajax dans asp.net mvc?


108

quelqu'un comment puis-je savoir si la demande est ajax? (J'utilise jquery pour ajax)


2
Vous pouvez également utiliser Fiddler pour regarder les requêtes. Vous apprendrez beaucoup en faisant cela.
CrazyDart

Réponses:


70

Tous les appels AJAX effectués par jQuery auront un en-tête ajouté pour indiquer qu'il s'agit d'AJAX. L'en-tête à vérifier est X-Requested-With, et la valeur sera XMLHttpRequestquand il s'agit d'un appel AJAX.

Notez que les requêtes AJAX sont des GET ou POST normaux, donc à moins que vous (ou votre bibliothèque AJAX comme jQuery) n'ajoutiez un en-tête supplémentaire dans la requête, il n'y a aucun moyen de savoir avec certitude s'il s'agit d'AJAX ou non.


3
@Omu: Request.Headers["X-Requested-With"]ou similaire. Vérifiez MSDN. Les en-têtes sont toujours liés aux demandes.
Robert Koritnik

179

Il y a aussi le Request.IsAjaxRequestsi vous utilisez une version ultérieure de MVC. Je n'ai plus la version 1 donc je ne peux pas dire si c'est en version 1.

Si vous avez besoin de cette vérification dans Global.asax.cs, essayez ceci: new HttpRequestWrapper(Request).IsAjaxRequest()


1
@BuildStarted J'ai besoin de cette vérification dans Global.asax.cs donc cela ne m'aidera pas
Omu

2
@BuildStarted n'est pas disponible dans Application_Error
Omu

1
Oui vous avez raison. C'est parce qu'il est en dehors de MVC et ne l'utilise pas HttpRequestBase. Je n'ai pas eu besoin de ça, alors je n'ai pas cherché trop profondément. Merci pour l'information.
Construit

20
new HttpRequestWrapper (Request) .IsAjaxRequest ();

1
BTW: Si vous êtes à l'intérieur du filtre d'autorisation personnalisé, utilisez ceci pour obtenir la méthode IsAjaxRequest sur Request: filterContext.HttpContext.Request.IsAjaxRequest
user1068352

51

Cela fonctionne pour moi dans ASP.NET MVC 3

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

1
Ce n'est pas disponible dans Application_Error
ajbeaven

1
Ce n'est pas disponible dans Application_BeginRequest
Varadha31590

Dans Global.asax:new HttpRequestWrapper(Request).IsAjaxRequest()
Morgs
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.