come sapere se la richiesta è ajax in asp.net mvc?


108

qualcuno come posso sapere se la richiesta è ajax? (Sto usando jquery per ajax)


2
Puoi anche usare Fiddler per guardare le richieste. Imparerai molto facendo questo.
CrazyDart

Risposte:


70

Tutte le chiamate AJAX effettuate da jQuery avranno un'intestazione aggiunta per indicare che è AJAX. L'intestazione da controllare è X-Requested-Withe il valore sarà XMLHttpRequestquando si tratta di una chiamata AJAX.

Nota che le richieste AJAX sono normali GET o POST, quindi a meno che tu (o la tua libreria AJAX come jQuery) non stia aggiungendo un'intestazione aggiuntiva alla richiesta, non c'è modo di sapere con certezza se si tratta di AJAX o meno.


3
@Omu: Request.Headers["X-Requested-With"]o simile. Controlla MSDN. Le intestazioni sono sempre correlate alle richieste.
Robert Koritnik

179

C'è anche Request.IsAjaxRequestse stai usando una versione successiva di MVC. Non ho più la versione 1, quindi non posso dire se è nella versione 1.

Se hai bisogno di questo controllo in Global.asax.cs, prova questo: new HttpRequestWrapper(Request).IsAjaxRequest()


1
@BuildStarted Ho bisogno di questo controllo in Global.asax.cs quindi questo non mi aiuterà
Omu

2
@BuildStarted non è disponibile in Application_Error
Omu

1
Si hai ragione. È perché è al di fuori di MVC e non utilizza HttpRequestBase. Non ne avevo bisogno, quindi non ho guardato troppo in profondità. Grazie per il testa a testa.
Buildstarted il

20
new HttpRequestWrapper (Request) .IsAjaxRequest ();

1
BTW: se sei all'interno del filtro di autorizzazione personalizzato, usa questo per ottenere il metodo IsAjaxRequest su richiesta: filterContext.HttpContext.Request.IsAjaxRequest
user1068352

51

Funziona per me in ASP.NET MVC 3

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

1
Questo non è disponibile in Application_Error
ajbeaven

1
Questo non è disponibile in Application_BeginRequest
Varadha31590

In Global.asax:new HttpRequestWrapper(Request).IsAjaxRequest()
Morgs
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.