Wie kann man wissen, ob die Anfrage Ajax in asp.net mvc ist?

108

Wie kann ich wissen, ob die Anfrage Ajax ist? (Ich benutze jquery für Ajax)

Omu
quelle
2
Sie können auch Fiddler verwenden, um die Anforderungen zu überwachen. Sie werden dadurch viel lernen.
CrazyDart

Antworten:

70

Allen von jQuery getätigten AJAX-Aufrufen wird ein Header hinzugefügt, der angibt, dass es sich um AJAX handelt. Der zu überprüfende Header ist X-Requested-Withund der Wert ist, XMLHttpRequestwenn es sich um einen AJAX-Aufruf handelt.

Beachten Sie, dass AJAX-Anforderungen normale GETs oder POSTs sind. Wenn Sie (oder Ihre AJAX-Bibliothek wie jQuery) der Anforderung keinen zusätzlichen Header hinzufügen, können Sie nicht sicher feststellen, ob es sich um AJAX handelt oder nicht.

RedFilter
quelle
3
@ Omu: Request.Headers["X-Requested-With"]oder ähnlich. Überprüfen Sie MSDN. Header beziehen sich immer auf Anforderungen.
Robert Koritnik
179

Es gibt auch die, Request.IsAjaxRequestwenn Sie eine spätere Version von MVC verwenden. Ich habe keine Version 1 mehr, daher kann ich nicht sagen, ob es sich um Version 1 handelt.

Wenn Sie diese Prüfung in Global.asax.cs benötigen, versuchen Sie Folgendes: new HttpRequestWrapper(Request).IsAjaxRequest()

Buildstarted
quelle
1
@BuildStarted Ich brauche diese Überprüfung in Global.asax.cs, damit mir das nicht hilft
Omu
2
@BuildStarted ist nicht verfügbar in Application_Error
Omu
1
Ja, du hast recht. Dies liegt daran, dass es außerhalb von MVC liegt und nicht verwendet wird HttpRequestBase. Ich hatte kein Bedürfnis danach, also habe ich nicht zu tief geschaut. Danke für die Warnung.
Buildstarted
20
neuer HttpRequestWrapper (Request) .IsAjaxRequest ();
1
Übrigens: Wenn Sie sich innerhalb eines benutzerdefinierten Autorisierungsfilters befinden, verwenden Sie diesen, um die IsAjaxRequest-Methode auf Anfrage abzurufen: filterContext.HttpContext.Request.IsAjaxRequest
user1068352
51

Es funktioniert für mich in ASP.NET MVC 3

if (Request.IsAjaxRequest())
{
     // ajax request handled
}
Piotr Czyż
quelle
1
Dies ist nicht verfügbar in Application_Error
ajbeaven
1
Dies ist nicht verfügbar in Application_BeginRequest
Varadha31590
In Global.asax:new HttpRequestWrapper(Request).IsAjaxRequest()
Morgs