Soru Sorunun ajax olup olmadığı nasıl kontrol edilir? Codebehind - ASP.NET Webforms


Denedim Request.IsAjaxRequest ancak bu WebForms'ta mevcut değil. JQuery ajax araması yapıyorum. Bunun bir ajax isteği olup olmadığını nasıl kontrol edebilirim?


25
2017-12-08 22:03


Menşei




Cevaplar:


Kendi uzantı yönteminizi, MVC kodu

Örneğin.

public static bool IsAjaxRequest(this HttpRequest request)
{
    if (request == null)
    {
        throw new ArgumentNullException("request");
    }

    return (request["X-Requested-With"] == "XMLHttpRequest") || ((request.Headers != null) && (request.Headers["X-Requested-With"] == "XMLHttpRequest"));
}

HTHs,
Charles

Düzenle: Aslında Geri Arama istekleri de ajax istekleridir

    public static bool IsAjaxRequest(this HttpRequest request)
    {
        if (request == null)
        {
            throw new ArgumentNullException("request");
        }
        var context = HttpContext.Current;
        var isCallbackRequest = false;// callback requests are ajax requests
        if (context != null && context.CurrentHandler != null && context.CurrentHandler is System.Web.UI.Page)
        {
            isCallbackRequest = ((System.Web.UI.Page)context.CurrentHandler).IsCallback;
        }
        return isCallbackRequest || (request["X-Requested-With"] == "XMLHttpRequest") || (request.Headers["X-Requested-With"] == "XMLHttpRequest");
    }

45
2017-12-08 22:58



Bu son satırın refactored olabilir return request["X-Requested-With"] == "XMLHttpRequest" || request.Headers["X-Requested-With"] == "XMLHttpRequest"; - mattalxndr
@mattalxndr - ne kadar serin yeniden satılır;) - Dementic
eklendi geri arama desteği - user960567


ScriptManager olup olmadığını kontrol etmeye çalışın IsInAsyncPostBack :

ScriptManager.GetCurrent(Page).IsInAsyncPostBack

4
2017-12-08 22:12



Bu, hem jquery ajax'tan hem de Update panelleri gibi kontrollerden kaynaklanan ajax istekleri için çalışır mı? - DotnetDude
Emin değilim, bu yüzden yazdım try;-) - Tim Schmelter


Genel olarak, X-Requested-With başlık, değerinin 'XMLHttpRequest' olduğundan emin olmak. Ben bir C # geliştiricisi değilim (henüz), ama hızlı bir google arama C # içinde böyle bir şey gider diyor ki:

Request.Headers["X-Requested-With"] == "XMLHttpRequest";

3
2017-12-08 22:10





Evet, Request.IsAjaxRequest başlıkları ve querystring için bakar X-Requested-Withama jquery'in X-Requested-With başlığı.

Fiddler'ı kullanarak hangi başlıkların gönderileceğini deneyebilir veya alternatif olarak POST url’yi belirleyerek sorgulamada gönderebilirsiniz.

/whatever.aspx?x-requested-with=XMLHttpRequest


1
2017-12-08 22:17



JQuery X-Requested With'u gönderiyor, böylece Karim79 için başlıkları kontrol edersem işe yarıyor. Ancak İstekte, ana sayfada bir IsAjaxRequest özelliği yok. - DotnetDude
Ah, anladım - her zaman yanlış olduğunu kastettiğini sanıyordum. ASP.net'in hangi sürümünü kullanıyorsunuz ve sorununuzu çoğaltmak için bazı kodları görebilir miyiz? - devrooms


Sınıfınızı süsleyin [WebMethod(EnableSession = true)]Eğer aşağıdaki işlevi kod arkasında yazıyorsanız ve ajax çağrısından aynı işlevi çağırırsanız, emin olun.

[WebMethod(EnableSession = true)]
    public static void   getData(string JSONFirstData,string JSONSecondData, string JSONThirdData, string JSONForthData, ...)
    {
       //code
    }

Ajax URL’si gibi ol URL :'/Codebehind.aspx/getData'


0
2017-08-03 07:34