2009-03-20 8 views
5

में ऑनइनिट ईवेंट का उपयोग करके मेरे पास एक मास्टरपेज की ऑनइनिट ईवेंट ओवरराइड करने वाला सामग्री पृष्ठ है। ओवरराइड ठीक काम करता है, जब तक कि मैं पृष्ठ पर एक कस्टम उपयोगकर्ता नियंत्रण नहीं डालता: इस मामले में ऑनइनिट ईवेंट सामग्री पृष्ठ के लिए आग नहीं करता है (उपयोगकर्ता नियंत्रण में कोई ओवरराइड उपयोग नहीं किया जाता है)asp.net

संभावित कारण/समाधान क्या हैं इस? (मैं OnInit घटना का उपयोग गतिशील नियंत्रण बनाने के लिए)


संपादित करें:

अब मैं सामग्री पृष्ठ में इस की कोशिश की:

(OnPreInit हिस्सा रन, लेकिन Masters_Init नहीं मिलता है कहा जाता है ...)

protected override void OnPreInit(EventArgs e) 
    { 
     base.Master.Init += new EventHandler(Masters_Init); 
    } 

    void Masters_Init(object sender, EventArgs e) 
    { 
    //code 
    } 

उत्तर

17

क्या आप आधार बुला रहे हैं। इनइनिट?

public override void OnInit(EventArgs e) 
{ 
    // code before base oninit 
    base.OnInit(e); 
    // code after base oninit 
} 

अद्यतन

public class Page1 : Page 
{ 
    public Page1 : base() { 
    PreInit += Page_PreInit; 
    } 
    void Page_PreInit(object sender, EventArgs e) 
    { 
    Master.Init += Master_Init; 
    } 
    void Master_Init(object sender, EventArgs e) 
    { 
    //code 
    } 
} 

इसके अलावा टिप्पणियां मैं घटनाओं अधिभावी नहीं की सिफारिश करेंगे में उल्लेख किया है के रूप में अगर आप की जरूरत नहीं है, लेकिन अगर आप आधार कॉल करने के लिए यकीन है कि होना चाहिए। तो यह ऊपर अपने संपादन में

protected override void OnPreInit(EventArgs e) 
{ 
    base.OnPreInit(e); 
    base.Master.Init += new EventHandler(Masters_Init); 
} 
+0

यकीन होना चाहिए, लेकिन घटना फायरिंग नहीं है: तो यह कोई फर्क नहीं पड़ता वैसे भी – akosch

+0

तुम सिर्फ ओवरराइड OnInit के बजाय masterpage की Init घटना की सदस्यता कर सकते हैं? – bendewey

+0

यदि यह आपके प्रश्न में कुछ कोड पोस्ट नहीं करता है। – bendewey