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)


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.


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()


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
}

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.