2009-06-17 7 views
6

मैं उदाहरण के लिए बटन पर नियंत्रण रखें पूरी तरह से वेबफ़ॉर्म घटना मॉडल (नहीं पेज जीवन चक्र को समझने की कोशिश कर रहा हूँ, लेकिन कैसे घटनाओं ऊपर तार कर रहे हैं जब .aspx या .ascx फ़ाइलें में एलान के तौर पर निर्दिष्ट।वेबकंट्रोल घटनाओं का "ऑन" का उपसर्ग क्यों है?

। यह एक क्लिक इवेंट है जिसे आप कोड-बैक में वायर कर सकते हैं, लेकिन इसमें .aspx/.ascx फ़ाइल में "ऑनक्लिक" ईवेंट है।

मैंने .NET परावर्तक का उपयोग किया और बटन नियंत्रण में एक संरक्षित ऑनक्लिक है विधि, लेकिन यह .aspx/.ascx द्वारा असाइन किए जाने के लिए उपलब्ध नहीं होना चाहिए। जब ​​तक मुझे कुछ याद नहीं आ रहा है।

क्या किसी को पता है कि "ऑन" उपसर्ग क्यों जोड़ा जाता है?

बस थोड़ा सा स्पष्ट करने के लिए: मैं नामकरण सम्मेलन कार्यों को समझता हूं। मैं जानना चाहता हूं कि .aspx/.ascx में "ऑनक्लिक" का अनुवाद कैसे किया जाता है। CLick + = new EventHandler (blahName); अर्थात। अगर मैं कंट्रोल चेंज इवेंट हैंडलर बनाता हूं, तो क्या मुझे ऑनकंट्रोल को .aspx/.ascx फ़ाइल में वैध रूप से दिखाने के लिए कुछ भी करने की ज़रूरत है?

+0

यह भी देखें:> [एएसपी.NET नियंत्रणों पर ईवेंट हैंडलर गुणों के गुणों में एक उपसर्ग (लोड इवेंट हैंडलर के लिए ऑनलोड)] (http://stackoverflow.com/questions/969128/how-come- द-एट्रिब्यूट्स फॉर इवेंट-हैंडलर-प्रॉपर्टी-ऑन-एएसपी-नेट-कंट्रोल-ए-एपी) –

उत्तर

4

यह एक नामकरण सम्मेलन से अधिक है क्योंकि उपयोगकर्ता नियंत्रण में ईवेंट स्वचालित रूप से घोषणात्मक वाक्यविन्यास में "ऑन" उपसर्ग प्राप्त करते हैं।

उदाहरण के लिए, मेरे पास एक UserControl है जो एक परियोजना चयन घटना घोषित करता है। एक हैंडलर घोषणात्मक रूप से जोड़ने के लिए, मैंने OnProjectSelected विशेषता सेट की है।

UserControl: एलान के तौर पर हैंडलर

 public event EventHandler<ProjectSelectedEventArgs> ProjectSelected; 

जोड़ना:

 <user:ProjectList id="uxProjectList" runat="server" 
      OnProjectSelected="uxProjectList_ProjectSelected" /> 

के पीछे कोड में हैंडलर जोड़ना:

 uxProjectList.ProjectSelected += uxProjectList_ProjectSelected; 

यह दो बार मुझे से बाहर नरक उलझन में, एक बार जब मैं नहीं कर सके यह पता नहीं लगा कि घटना घोषणात्मक रूप से क्यों उपलब्ध नहीं थी, और फिर जब मैंने "ओएनपी" कार्यक्रम का नाम दिया roject चयनित "और विशेषता" OnOnProject चयन "बन गया।

+0

यह वास्तव में विजुअल स्टूडियो आईडीई द्वारा उपयोग किए जाने वाले सम्मेलनों से थोड़ा गहरा है। घटनाक्रम बनाम प्रतिनिधियों: http://blog.monstuff.com/archives/000040.html –

+0

@ जेसन: मुझे यह लेख बिल्कुल स्पष्ट नहीं मिला। किसी ईवेंट के लिए ईवेंट हैंडलर को एक प्रतिनिधि द्वारा परिभाषित किया जाता है। आप ईवेंट की हैंडलर परिभाषा के अनुरूप हैंडलर को एक ईवेंट के साथ पंजीकृत करते हैं।घटनाओं को संभालना आसान बनाने के लिए, कुछ कक्षाएं अपने स्वयं के कार्यक्रमों को संभालती हैं जो ओवरराइडेबल "ऑन [इवेंट]" विधि को कॉल करती हैं ताकि उपभोक्ता ईवेंट को संभालने के बजाय विधि को ओवरराइड कर सकें। ASP.NET घोषणात्मक वाक्यविन्यास की अनुमति देने के लिए स्वचालित रूप से ऐसा प्रतीत होता है। –

+0

माफ़ी, यह पहला लेख था जिसे मैंने घटनाओं और प्रतिनिधियों के बीच अंतर को दर्शाने के लिए Google को खींच लिया था, क्योंकि मुझे लगा कि आपकी पोस्ट में संबोधित नहीं किया गया था (क्योंकि यह "ऑन" सम्मेलन को स्पष्ट करने के लिए होना चाहिए) –

6

उन स्टोर प्रतिनिधियों को संदर्भ देते हैं कि कॉलिंग कोड घटनाओं का उपयोग करके तारों को तारित करेगा; घटना के बीच, और प्रतिनिधि के बीच अंतर करने के लिए।

+4

हां क्योंकि "क्लिक करें" लगता है जैसे यह एक क्लिक हो सकता है, जबकि "ऑनक्लिक" एक क्लिक के कारण होता है। – ChrisW

2

यह घटनाओं को बढ़ाने के दौरान उपयोग किया जाने वाला एक नामकरण सम्मेलन है। OnSomethingHappened ... OnClick, OnChange, OnClose। मुझे नहीं लगता कि जादूई या भयावह कुछ भी है, यह सिर्फ एक सम्मेलन है।

0

अर्थात् यह मूल रूप से वीबी परंपराओं के लिए एक पुरानी फेंक है जहां घटना श्रोताओं को आम तौर पर ऑन भी कहा जाता है। पुरानी आदतें मुश्किल से जाती हैं।

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