2010-01-25 16 views
7

दोस्तों, मुझे कुछ मदद चाहिए। मेरे पास एक एएसपी.नेट वेबसाइट है और एक कस्टम नियंत्रण (इसे इसे MyControl कहते हैं)। मुझे AJAX के साथ इस नियंत्रण पर एक विधि कॉल करने की आवश्यकता है। मैं जावास्क्रिप्ट (jQuery) से सी # WebMethod से AJAX कॉल पोस्ट कर रहा हूं। यह ठीक काम करता है, लेकिन मैं एक स्थिर वेबमेड में myControl नहीं प्राप्त कर सकता। कोई समस्या इस समस्या को हल करने के लिए कैसे करें?स्थिर [WebMethod] (जेएस AJAX कॉल) से ASP.NET नियंत्रण एक्सेस करें

लघु संस्करण: सी # WebMethod को जे एस से AJAX कॉल काम करता है ->* यहां (इस विधि में) मैं अपने कस्टम नियंत्रण पर एक तरीका है जिसके स्थिर विधि प्रकार के कारण दुर्गम है कॉल करने की आवश्यकता *

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

[संभावित वेब विधि में नियंत्रण कैसे प्राप्त करें] के संभावित डुप्लिकेट (https://stackoverflow.com/questions/8967763/how-to-get-controls-in-static-web-method) –

उत्तर

5

अच्छा, यह सही दृष्टिकोण नहीं है। वेब सेवा विधि स्तर पर आप पृष्ठ संरचना के बारे में कुछ भी नहीं देख सकते हैं। इस विधि में आप केवल अपनी वस्तुओं की सूची लोड कर सकते हैं और इसे वापस कर सकते हैं। जहां यह सूची बाध्य है, GetListItems 'व्यवसाय में से कोई नहीं है।

आप कॉलबैक फ़ंक्शन को लागू करके आइटम का प्रदर्शन प्रबंधित कर सकते हैं (उदाहरण के लिए http://mattberseth.com/blog/2007/06/aspnet_ajax_invoke_a_static_me.html देखें) या अपडेटपेनल दृष्टिकोण का उपयोग करके।

+0

मैं नहीं हूं सुनिश्चित करें कि हम एक दूसरे को समझते हैं :) मुझे एक सिंक्रनाइज़ सूची को लागू करना होगा (क्लाइंटसाइड सूची मुझे सर्वर पर सूची के समान ही होनी चाहिए) ताकि प्रत्येक परिवर्तन सर्वर पर पोस्ट किया जाना चाहिए। उदाहरण के लिए मैं AJAX के साथ कुछ आइटम हटाना चाहता हूं - उपयोगकर्ता किसी सूची में किसी आइटम को हटा देता है और AJAX कॉल को कस्टम कंट्रोल विधि पर कॉल करता है जो इस आइटम को सर्वर पर सूची में हटा देता है। [वेबमाइडर] प्रॉक्सी या मध्यस्थ की तरह होना चाहिए: जेएस AJAX कॉल * .aspx विधि -> यह विधि कस्टमकंट्रोल – Heko

+0

पर एक विधि को कॉल करती है, मैंने गलत तरीके से एक वेब सेवा विधि के बारे में लिखा है लेकिन यह तर्क नहीं बदलता है :)। जब तक आप एक वेबमाइथ का उपयोग कर रहे हैं, तब तक आप उस स्तर पर अपने नियंत्रण तक नहीं पहुंच सकते हैं। आप कॉन्टेक्स्ट ऑब्जेक्ट, सत्र आदि को प्रबंधित कर सकते हैं, या बाहरी लाइब्रेरी को कॉल कर सकते हैं लेकिन यह सब कुछ है।
आपके पास केवल वही करने के दो तरीके हैं जो आप चाहते हैं:
1 - अपडेटपेनल का उपयोग करें (JQuery कॉल को हटाएं)। इस समाधान के साथ आप विधि से अपना नियंत्रण प्रबंधित कर सकते हैं जैसा कि आप एक पूर्ण पोस्टबैक परिदृश्य में करते हैं। 2 - मौजूदा मार्कअप में वेब विधि के परिणाम को इंजेक्ट करें। – mamoo

+0

धन्यवाद! मैं कोशिश करूंगा;) – Heko

संबंधित मुद्दे