2009-08-20 12 views
5

किसकी सिफारिश की जाती है? मुझे समझाने दो कि मैं क्या हासिल करना चाहता हूं!
मेरे पास कई उपयोगकर्ताओं द्वारा उपयोग किए जाने वाले एक पृष्ठ हैं, प्रत्येक उपयोगकर्ता के पास व्यवस्थापक, ऑपरेटर, सामान्य उपयोगकर्ता जैसी एक अलग भूमिका होती है।
जब कोई ग्राहक उस पृष्ठ को खोलता है तो मैं नियंत्रण (बटन) का एक सेट प्रदर्शित करना चाहता हूं जो उनकी भूमिका पर निर्भर करता है।
व्यवस्थापक को x और y करने की अनुमति है, लेकिन सामान्य उपयोगकर्ता को इन कार्रवाइयों को करने की अनुमति नहीं है।
एएसपी .NET: गतिशील लोड नियंत्रण बनाम दृश्यमान = सही

जो मैं करना चाहता हूं उसे हासिल करने के लिए, कौन सा दृष्टिकोण सबसे अच्छा है?
क्या मुझे HTML में सभी नियंत्रणों को परिभाषित करना चाहिए, फिर दृश्यमान संपत्ति टॉगल करना चाहिए, या गतिशील रूप से आवश्यक नियंत्रण लोड करना चाहिए?


दृश्यमान = झूठी के लिए मैं सर्वर प्रसंस्करण समय के बारे में चिंतित हूं। भले ही एचटीएमएल मार्कअप क्लाइंट को एक दृश्यमान = झूठी नियंत्रण के लिए नहीं भेजा गया हो, मुझे पता है कि नियंत्रण अभी भी एएसपी .NET द्वारा लोड किया गया है और यहां तक ​​कि संसाधित भी हो सकता है, लेकिन उसका HTML परिणाम आउटपुट स्ट्रीम में नहीं लिखा गया है।

गतिशील रूप से लोड नियंत्रण के लिए, एक असुविधाजनक है कि उन्हें पोस्टबैक पर पुन: प्रारंभ करने की आवश्यकता है, साथ ही घटनाओं और पोस्टबैक के साथ कुछ समस्याएं भी हैं।

उत्तर

3

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

इसके अलावा, कोड के साथ काम करने वाले अगले व्यक्ति को बनाए रखने के लिए इसे गतिशील रूप से करना बहुत आसान है। यह पता लगाने की कोशिश करने के बजाय लेआउट स्पष्ट और आसान है कि यह पता लगाने की कोशिश कर रहा है कि कौन सा कोड कहां लगा रहा है।

गतिशील रूप से नियंत्रण बनाना वास्तव में आपको व्यूस्टेट और शायद लापरवाह प्रोसेसिंग सर्वर पक्ष को छोड़कर छोड़कर बहुत कुछ नहीं प्राप्त करता है। मुझे लगता है कि आपको एक गैर-व्यूस्टेट नियंत्रण और गतिशील रूप से आवश्यकतानुसार जोड़ने के लिए ओवरहेड के बीच भी एक उल्लेखनीय अंतर को मापना मुश्किल होगा।

आखिरकार, यह गतिशील रूप से ऐसा करना आसान नहीं है, इसलिए सबसे आसान मार्ग क्यों न लें और देखें कि यह कोई समस्या है या नहीं। यदि यह कोई मुद्दा बन जाता है तो इसे आवश्यक परिशोधित करें।

1

.Visible = false इसके लिए काफी उचित दृष्टिकोण है। जब तक आप सिद्ध नहीं करते हैं, तब तक इस विधि की गति से खुद को चिंता न करें, यह आवश्यक है।

1

क्या होगा यदि आप अलग अलग पैनल में विभिन्न भूमिकाओं के नियंत्रण और बस दर्शनीय/अदृश्य पूरे पैनल

+0

दिलचस्प दृष्टिकोण लेकिन मेरे मामले में काम नहीं करते हैं। व्यवस्थापक एक्स और वाई कर सकता है, और एक मॉडरेटर एक्स एक्शन भी कर सकता है, लेकिन वाई –

+0

नहीं (अगर) { x.visible = true y।दृश्य = सही } –

+0

यदि (मॉडरेटर) { x.visible = true y.visible = false } –

1

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

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