के अंदर उपयोगकर्ता नियंत्रण पर गुणों को सेट करना मेरे पास एक उपयोगकर्ता नियंत्रण है जिसे मैं किसी ऑब्जेक्ट के बारे में जानकारी दिखाने के लिए एकाधिक पृष्ठों पर उपयोग करता हूं। जब भी मुझे इस उपयोगकर्ता नियंत्रण का उपयोग करने की आवश्यकता होती है, तो मैं डिस्प्ले (उपयोगकर्ता नियंत्रण पर) नामक एक विधि को कॉल करता हूं और कुछ मानों में पास करता हूं।फ़ोरैच लूप
public void Display(string name, List<Items> items)
{
// Set a few protected properties so I can display values from the aspx page
}
यह ठीक काम करता है, लेकिन अब मुझे एएसपीएक्स पेज में फ़ोरैच लूप के अंदर इस नियंत्रण का उपयोग करने की आवश्यकता है।
<% foreach (var c in Categories) { %>
<uc:ItemsControl runat="server"/>
<% } %>
श्रेणियों के ऑब्जेक्ट में विधियों और गुण हैं जिन्हें मैं अन्यथा प्रदर्शन विधि में पास करूंगा। तो मैं मूल्यों को सही तरीके से कैसे सेट करूं?
मैं उपयोगकर्ता नियंत्रण सार्वजनिक पर गुण बनाने की कोशिश की और सिर्फ उन्हें इस तरह से की स्थापना:
<uc:ItemsControl Items="<%# c.Items %>"
OtherProperty="<%# c.GetProperty() %>"
runat="server"/>
यह काम नहीं करता है, क्योंकि गुण में भेजा जा रहा है खाली हैं। अगर मैं <% = का उपयोग करता हूं तो यह काम नहीं करता है और वास्तव में एक त्रुटि फेंकता है क्योंकि यह 'सी' नहीं पहचानता है (जब तक मैं runat = "server" नहीं लेता तब यह कम से कम संकलित होगा, फिर भी यह काम नहीं करेगा ।
क्या यह करने के लिए उचित तरीका है
संपादित करें:?। इसके अलावा, एक पुनरावर्तक नियंत्रण डेटा बाइंडिंग के लिए इस आसान बना सकता है, लेकिन मैं किसी भी नेट नियंत्रणों के उपयोग से बचने के लिए पसंद करते हैं
एक पुनरावर्तक शायद उचित तरीका होगा, लेकिन हम जहां भी संभव हो .NET नियंत्रणों के उपयोग से बचने की कोशिश करते हैं और एचटीएमएल उत्पन्न करने के साथ जाना पसंद करते हैं। – Brandon
हाँ, मैं भी - मुझे लूप-एंड-एमिट-एचटीएमएल दृष्टिकोण भी अधिक सरल लगता है। यही कारण है कि मुझे एएसपी.नेट एमवीसी पसंद है। लेकिन वेब प्रपत्रों के साथ, यदि आप पहले से ही अपने स्वयं के कस्टम नियंत्रणों का उपयोग कर रहे हैं और विशेष रूप से लूप में, अपनी बाध्यता में डेटा को बाध्य करने की आवश्यकता है, तो जाने के लिए सबसे आसान तरीका है। जिज्ञासा से, एएसपीनेट के अंतर्निर्मित नियंत्रणों से क्यों बचें? क्या यह एक प्रदर्शन से संबंधित चिंता है या कुछ और? दोहराना नियंत्रण * बहुत * नंगे हड्डियों और तेज़ है - और इस तरह कोई व्यूस्टेट या अन्य क्रूड का कारण बनता है। पुनरावर्तक एक फोरैच पाश की तरह नियंत्रण के रूप में कार्य कर सकता है। –
यह एक स्थिरता/प्रदर्शन चिंता का अधिक है। मेरा मालिक मूल रूप से प्रोजेक्ट में .NET नियंत्रण रखने से दूर चले गए क्योंकि नियंत्रण/अजाक्सटूलकिट हमें जो चाहिए था उसके लिए बहुत भारी था, इसलिए एक शुद्ध HTML/jQuery दृष्टिकोण लिया गया था। अगर सब कुछ विफल हो जाता है तो मैं एक ही दोहराने में फेंक सकता हूं, मैं बस सोच रहा था कि क्या हम जिस मार्ग को पहले ही शुरू कर चुके हैं उसका उपयोग करके ऐसा करने का कोई तरीका था। – Brandon