2010-09-09 24 views
7

मैं एक एएसपी.NET 4.0 प्रोजेक्ट चला रहा हूं।पेज_PreInit नहीं कहा जाता है?

.aspx पृष्ठ शीर्षक में AutoEventWireup="true" सेट है।

हालांकि OnPreInit कहा जाता है, Page_PreInit नहीं है? क्या कोई सुझाव दे सकता है कि क्या गलत है?

protected void Page_PreInit(object sender, EventArgs e) 
{ 
    Response.Write("bar"); 
} 

protected override void OnPreInit(EventArgs e) 
{ 
    Response.Write("foo"); 
    base.OnPreInit(e); 
} 
+0

आपका वाक्य रचना ठीक लग रहा है। क्या यह मास्टरपेज में परिभाषित है? – Sauleil

+2

मैं आपके द्वारा वर्णित मुद्दे को पुन: पेश नहीं कर सका। क्या ऑटोवेन्टवायरअप मास्टर पेज में परिभाषित है? –

+0

या क्या आप पृष्ठ को विरासत में रखते हैं? – JBrooks

उत्तर

1

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

कृपया नीचे कोड देखें। इसके माध्यम से कदम उठाएं और आप देखेंगे कि यह Page_PreInit में कैसे जाता है और फिर OnPreInitEvent में ओवरराइट हो जाता है। यदि आप एंटीयर OnPreInit ईवेंट पर टिप्पणी करते हैं तो आपको स्क्रीन पर "पेज_PreInit" लिखा जाएगा।

using System; 

public partial class _Default : System.Web.UI.Page 
{ 
    string eventName = String.Empty; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     Response.Write(eventName); 
    } 

    protected void Page_PreInit(object sender, EventArgs e) 
    { 
     eventName = "Page_PreInit"; 
    } 

    protected override void OnPreInit(EventArgs e) 
    { 
     base.OnPreInit(e); 
     eventName = "OnPreInit"; 
    } 
} 
संबंधित मुद्दे