2011-11-18 9 views
8

bir <asp:UpdatePanel /> kullanabileceğimiz nasıl benzer bir Ajax geri gönderme yapılır olup olmadığını belirlemek için bir yolu var mı ... ... belirlemek için.UpdatePanel geri gönderme olup olmadığını nasıl kontrol edilir? bir düğmeden bir işlem bildirim gerçekleşiyor gönderirim eğer</p> <pre><code>if(!Page.IsPostBack) { ...snip } </code></pre> <p>

Ben jQuery Ajax isteklerini tespit etmek için çalışıyorum, ancak bunun yanı sıra ben mesela dışlamak istediğiniz UpdatePanel isteklerini almaya geliyor ...

if (Request.IsAjaxRequest() && !Page.IsUpdatePanelPostback) 
{ 
    // Deal with jQuery Ajax 
} 

cevap

12

Ben bu çözümü daha iyi çalışacaktır eğer biliyorum, ama

if (ScriptManager.GetCurrent(Page).IsInAsyncPostBack) 
{ 
    Control ctrl = GetControlThatCausedPostBack(Page); 
    if (ctrl is UpdatePanel) 
    { 
     //handle updatepanel postback 
    } 
} 

private Control GetControlThatCausedPostBack(Page page) 
{ 
    //initialize a control and set it to null 
    Control ctrl = null; 

    //get the event target name and find the control 
    string ctrlName = Page.Request.Params.Get("__EVENTTARGET"); 
    if (!String.IsNullOrEmpty(ctrlName)) 
     ctrl = page.FindControl(ctrlName); 

    //return the control to the calling method 
    return ctrl; 
} 
+0

güncelledik 'ScriptManager.GetCurrent (Sayfa) .IsInAsyncPostBack' bu kadar üzerine Ben pikap istemiyorum Ajax isteği kovabilirsin ASP.NET AJAX Extensions diğer denetimleri tahmin beri sahibi. –

+0

Bir atışa değer, sanırım. –

3

aşağıdaki deneyin:

var controlName = Page.Request.Params.Get("__EVENTTARGET"); 
if (!String.IsNullOrEmpty(controlName)) 
{ 
    // Use FindControl(controlName) to see whether 
    // control is of UpdatePanel type 
} 

faydalı linkler:

+0

Bu işe yarayabilir, ancak yalnızca belirli bir UpdatePanel algılamıyor değil mi? Herhangi bir UpdatePanel'i algılayan daha 'jenerik' bir çözümün peşindeyim. –

+0

Sorun yok, bu denetim UpdatePanel türünde olup olmadığı görmek için FindControl() kullanabilirsiniz ... Ben kullanabilir miyim diye merak ediyorum cevabımı – sll

9

Sen geri gönderme asenkron olup olmadığını kontrol edebilirsiniz ?: çalıştı ve arayan bir güncelleştirme panel tarafından verilip verilmediği konusunda yok bu özelliklerde:

ScriptManager.GetCurrent(Page).IsInAsyncPostback 
ScriptManager.GetCurrent(Page).AsyncPostbackSourceElementID 
İlgili konular