2010-01-25 24 views
7

Çocuklar, biraz yardıma ihtiyacım var. Bir ASP.NET WebSite ve bir özel denetim (buna myControl olarak adlandırın) ekledim. Bu kontrolde AJAX ile bir yöntem aramam gerekiyor. JavaScript (jQuery) - C# WebMethod'dan ajax araması gönderiyorum. Bu iyi çalışıyor, ancak statik bir WebMethod'da myControl'e gidemiyorum. Bu problemi nasıl çözebilirim?Erişim ASP.NET denetimi statik [WebMethod] (JS ajax çağrı)

Kısa versiyon: C# WebMethod için JS AJAX çağrısı işleri ->* Burada ben çünkü statik yöntem Çeşidi erişilemez benim özel denetimi yöntemi çağırmanız gerekir (bu yöntemde) *

[WebMethod] 
public static List<CustomListControl.IListItem> GetListItems() 
{ 
    // CAN'T GET TO MY CONTROL - need to return myContorl.Items; 
    return null; 
} 
+0

Olası çoğaltılabilir [Statik web yönteminde denetimler nasıl alınır] (https://stackoverflow.com/questions/8967763/how-to-get-controls-in-static-web-method) –

cevap

5

Bu doğru bir yaklaşım değil. Web hizmeti yöntem düzeyinde sayfa yapısı hakkında hiçbir şey göremezsiniz. Bu yöntemde sadece ürün listenizi yükleyebilir ve iade edebilirsiniz. Bu listenin bağlandığı yer, GetListItems'in işinin hiçbiri değildir.

Öğelerin görüntülenmesini bir geriçağırım işlevi uygulayarak (örneğin, bkz. http://mattberseth.com/blog/2007/06/aspnet_ajax_invoke_a_static_me.html) veya UpdatePanel yaklaşımını kullanarak yönetebilirsiniz.

+0

eminim birbirimizi anlıyoruz :) Eşzamanlı bir liste uygulamam gerekir (istemci listesi bir sunucudaki liste ile aynı olmalıdır) böylece her değişikliğin sunucuya gönderilmesi gerekir. Örneğin ajax ile bir öğeyi silmek istiyorum - kullanıcı listedeki bir öğeyi siler ve bu öğeyi sunucudaki listede silen özel denetim yöntemine ajax çağırır. [WebMethod] bir proxy veya arabulucu gibi olmalıdır: JS ajax çağrıları * .aspx yöntemi -> bu yöntem customControl – Heko

+0

üzerinde bir yöntemi çağırıyor Yanlış bir web hizmeti yöntemi hakkında yazdım ama bu argümanı değiştirmez :). Bir WebMethod kullandığınız sürece, kontrollerinize o seviyede erişemezsiniz. Bağlam nesnesini, Oturumunu vb. Yönetebilir veya harici bir kütüphaneyi çağırabilirsiniz ancak hepsi budur.
İstediğiniz şeyi yapmanın iki yolu vardır:
1 - Bir UpdatePanel kullanın (JQuery çağrısının kaldırılması). Bu çözümle, kontrolünüzü, tam bir geri bildirim senaryosunda yaptığınız gibi, yöntemden yönetebilirsiniz. 2 - Web yönteminin sonucunu mevcut işaretlemeye enjekte edin. – mamoo

+0

Teşekkürler! Ben deneyeceğim;) – Heko

İlgili konular