2012-06-20 5 views
7

मैं एएसपी.NET 4.0 वेबफॉर्म का उपयोग कर रहा हूं। मैं मास्टर पेज का भी उपयोग कर रहा हूं जो अन्य मास्टर पेजों से प्राप्त होता है। मेरे पास पैनलों के अंदर नियंत्रण है। असल में बहुस्तरीय कंटेनर हैं। यह तत्वों को बड़ी आईडी के कारण बना रहा है। मैं आईडी के बारे में 300 बाइट लंबा देख रहा हूँ!ASP.NET सर्वर नियंत्रण कैसे कम से कम आईडी प्राप्त करने के लिए?

जब किसी पृष्ठ में सैकड़ों तत्व होते हैं, तो इन आईडी पृष्ठ के आकार को नाटकीय रूप से बढ़ाते हैं। मेरे पास बाध्यकारी नियंत्रण के साथ GridView है।

प्रत्येक सर्वर नियंत्रण में सबसे कम संभव आईडी रखने का सबसे अच्छा तरीका क्या है? क्या प्रत्येक तत्व अपने कंटेनर पर निर्भर नहीं है (ClientIDMode="static" के अलावा) आईडी भी अगर पृष्ठ में अनूठा हो तो भी? आखिरकार, क्या एएसपी.नेट एमवीसी इस मुद्दे को कम करता है?

उत्तर

1

मुझे लगता है कि ClientIDMode=static एक तरह से है। आप इसे अपने web.conf में भी सेट कर सकते हैं। और Asp.Net एमवीसी में, आपके पास एचटीएमएल (विशेष रूप से रेजर) पर पूर्ण नियंत्रण है। वेबफॉर्म जैसी कोई सोच नहीं है। आपके पास HTML टैग्स को आईडी निर्दिष्ट करने पर नियंत्रण है। असर Asp.Net एमवीसी अन्य सभी ढांचे का जवाब है।

3

मेरा सुझाव है changing the ClientIdMode के लिए या तो उम्मीद के मुताबिक या स्टेटिक आदेश को देखने के लिए कि अगर पैदा करता है कम पहचान पत्र में।

इसके अलावा यह CodeProject article आपको जो चाहिए उसे प्राप्त करने के लिए प्रतीत होता है।

1

अंतिम, क्या एएसपी.नेट एमवीसी इस मुद्दे को कम करता है?

हां।

एमवीसी में ViewState नहीं है और आप सर्वर पर कोई नियंत्रण नहीं चला रहे हैं।

आप किसी भी सर्वर नियंत्रण का उपयोग नहीं कर रहे हैं जो HTML पढ़ने के लिए कठिन परिश्रम उत्पन्न करता है।

आपके पास एमवीसी में ClientID से अधिक नियंत्रण है। जब तक मैं इसे अपने आप को बदलने

<a href="#" id="myID">Click</a> 

ऊपर मार्कअप हमेशा myID की आईडी होगा।

2

एमवीसी पूरी तरह से इस समस्या को कम करता है क्योंकि एचटीएमएल कोड की कोई सर्वर साइड प्रतिपादन समान तरीके से नहीं होती है। आपका सभी एचटीएमएल सीधे आपके विचारों में है ताकि आपके पास हर आइटम पर पूर्ण नियंत्रण हो। आप कॉलिंग इनपुट के जोखिम को भी चलाते हैं (उस पृष्ठ के मामले में जिसमें सैकड़ों इनपुट हैं)।

वेबफॉर्म में उत्पादित सभी एचटीएमएल को कम करने में मदद करने का एक तरीका यह है कि वेबसैरंट्रोल होने के लिए बिल्कुल आवश्यक नहीं है। उदाहरण के लिए, अधिकांश लेबल स्थिर हैं। वे सामान्य रूप से मानक टेक्स्ट या आइटम्स के साथ प्रतिस्थापित कर सकते हैं जिनमें runat="server" विशेषता शामिल नहीं है। यह आईडी को पहले स्थान पर उत्पन्न होने से रोक देगा। उत्पन्न होने वाले जंक की मात्रा को कम करने का एक और तरीका है कि आप व्यूस्टेट से जितने नियंत्रण कर सकते हैं उसे हटा दें। यह उन्हें अपने राज्य डेटा को लोड करने और व्यूस्टेट को कम रखने से रोक देगा।

क्लाइंटिडोड एक विरासत योग्य संपत्ति है ताकि आप इसे web.config (वैश्विक), web.config (स्थानीय) या पृष्ठ स्तर पर सेट कर सकें। आप इसे व्यक्तिगत रूप से भी इस्तेमाल कर सकते हैं। आपका प्रश्न विशेष रूप से इसे समाप्त करता है, लेकिन संभवतः आपके पास पहले से मौजूद चीज़ों को फिर से लिखने के बिना सबसे लचीलापन वाला सबसे अच्छा विकल्प होगा। अगर पुनर्लेखन कोई मुद्दा नहीं है, तो मैं एमवीसी का उपयोग करने की सलाह दूंगा।

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