2010-10-05 17 views

risposta

64

Tutte le chiamate AJAX effettuate da jQuery avranno un'intestazione aggiunta per indicare che è AJAX. L'intestazione da verificare è X-Requested-With e il valore sarà XMLHttpRequest quando 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) aggiunga un'intestazione aggiuntiva nella richiesta, non c'è modo di sapere con certezza se si tratta di AJAX o meno.

+2

ok, quindi come faccio a controllare questa intestazione in asp.net? – Omu

+2

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

156

C'è anche il Request.IsAjaxRequest se si utilizza una versione successiva di MVC. Non ho la versione 1 più in modo non posso dire se è in versione 1.

Se avete bisogno di questo check-in Global.asax.cs provare questo: new HttpRequestWrapper(Request).IsAjaxRequest()

+1

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

+0

@Omu: dipende da quale evento del global.asax.cs. Questa proprietà bool fa la stessa cosa internamente suggerita da RedFiler. E fai attenzione che le intestazioni sono ** sempre correlate alle richieste **. –

+0

'IsAjaxRequest' è un'estensione di' HttpRequestBase' quindi dovrebbe essere disponibile ovunque che sia disponibile la 'Richiesta'. – Buildstarted

48

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

+0

In Global.asax : 'new HttpRequestWrapper (Request) .IsAjaxRequest()' – Morgs

Problemi correlati