/ / क्यों घटना बुलबुले और सीधे क्लिक ईवेंट की सदस्यता क्यों नहीं लेते? - asp.net, घटनाओं, ओओपी, encapsulation

इवेंट बबलिंग क्यों करें और सीधे क्लिक ईवेंट की सदस्यता क्यों न लें? - asp.net, घटनाओं, ओओपी, encapsulation

मैं घटना बुलबुले पर एक लेख के माध्यम से जा रहा थाएएसपीनेट में और यह पता चला कि यद्यपि युक्त पृष्ठ से उपयोगकर्ता नियंत्रण बटन के क्लिक ईवेंट की सदस्यता लेना संभव है, "ऐसा करने से इनकैप्यूलेशन के कुछ ऑब्जेक्ट उन्मुख नियमों को तोड़ दिया जाएगा।" एक बेहतर विचार है किसी भी इच्छुक पार्टियों को ईवेंट को संभालने की अनुमति देने के लिए उपयोगकर्ता नियंत्रण में एक ईवेंट प्रकाशित करने के लिए।

मेरा सवाल यह है कि एक युक्त पृष्ठ से बटन के क्लिक ईवेंट की प्रत्यक्ष सदस्यता कैसे ऑब्जेप्यूलेशन के ऑब्जेक्ट उन्मुख नियमों को तोड़ देगी?

क्षमा करें अगर यह एक बेवकूफ सवाल है। : |

धन्यवाद!

उत्तर:

जवाब के लिए 3 № 1

बटन को UserControl द्वारा encapsulated माना जाता है।

यदि पृष्ठ सीधे बटन पर ईवेंट से जुड़ा हुआ है, तो पृष्ठ अब पर निर्भर है अंदरूनी कामकाज UserControl का।

पेज UserControl का उपभोग कर रहा है, नहींUserControl के बटन। यदि UserControl के लेखक बाद में बटन को हटाना चाहते हैं और "सबमिट" ईवेंट को फायर करने की कुछ फैंसी नई विधि का उपयोग करना चाहते हैं, तो आपका पृष्ठ टूटा जा सकता है क्योंकि बटन अब मौजूद नहीं हो सकता है।

उस मामले के लिए, यदि UserControl का मालिक v1.1 में btnSubmit से सबमिशन बटन पर बटन का नाम बदलने का निर्णय लेता है, तो यह आपके पृष्ठ को भी तोड़ सकता है।

UserControl का उपभोग करने के लिए बेहतर है और इसे अपने आंतरिक कार्यकलापों से चिंतित होने दें।


जवाब के लिए 3 № 2

विचार यह है कि नियंत्रण का बटन नियंत्रण के यूआई का कार्यान्वयन विवरण है। यदि आप क्लिक ईवेंट को पुन: प्रकाशित करते हैं तो आप उस बटन को छविबटन, लिंकबटन आदि के रूप में पुनः कार्यान्वित कर सकते हैं।

मुझे लगता है कि बटन पृष्ठ स्तर पर एक ईवेंट हैंडलर को बटन पर सेट करना ठीक है यदि बटन यूआई का स्थायी स्थिरता है। यह बहुत सारे ईवेंट कोड को बचाता है, खासकर बहुत सारे बटन के साथ।