asp.net mvc'de isteğin ajax olup olmadığını nasıl anlarım?


108

İsteğin ajax olup olmadığını nasıl bilebilirim? (Ajax için jquery kullanıyorum)


2
İstekleri izlemek için Fiddler'ı da kullanabilirsiniz. Bunu yaparak çok şey öğreneceksiniz.
CrazyDart

Yanıtlar:


70

JQuery tarafından yapılan tüm AJAX çağrıları, AJAX olduğunu belirtmek için eklenen bir başlığa sahip olacaktır. Kontrol edilecek başlık X-Requested-Withve değer XMLHttpRequestbir AJAX çağrısı olduğunda olacaktır .

AJAX isteklerinin normal GET'ler veya POST'lar olduğunu unutmayın, bu nedenle siz (veya jQuery gibi AJAX kitaplığınız) isteğe ek bir başlık eklemediğiniz sürece, AJAX olup olmadığını kesin olarak bilmenin bir yolu yoktur.


3
@Omu: Request.Headers["X-Requested-With"]veya benzeri. MSDN'yi kontrol edin. Başlıklar her zaman isteklerle ilgilidir.
Robert Koritnik

179

Orada da Request.IsAjaxRequestMVC kullandığınız takdirde bir sonraki sürümü. Artık sürüm 1'e sahip değilim, bu yüzden sürüm 1'de olup olmadığını söyleyemiyorum.

Global.asax.cs'de bu denetime ihtiyacınız varsa şunu deneyin: new HttpRequestWrapper(Request).IsAjaxRequest()


1
@BuildStarted Global.asax.cs'de bu çeke ihtiyacım var, bu yüzden bu bana yardımcı olmaz
Omu

2
@BuildStarted, Application_Error'da mevcut değil
Omu

1
Evet, haklısın. MVC dışında olduğu ve kullanmadığı için HttpRequestBase. Buna ihtiyacım olmadığı için çok derinlemesine bakmadım. Söylediğin için teşekkürler.
Yapım

20
new HttpRequestWrapper (İstek) .IsAjaxRequest ();

1
BTW: Özel yetkilendirme filtresindeyseniz, İstek üzerine IsAjaxRequest yöntemini almak için bunu kullanın: filterContext.HttpContext.Request.IsAjaxRequest
user1068352

51

Benim için ASP.NET MVC 3'te çalışıyor

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

1
Bu Application_Error'da mevcut değil
ajbeaven

1
Bu Application_BeginRequest
Varadha31590

Global.asax'ta:new HttpRequestWrapper(Request).IsAjaxRequest()
Morgs
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.