2010-07-22 16 views
7

मैं पृष्ठ के बिना नियंत्रण कैसे लोड कर सकता हूं?बिना किसी पृष्ठ के लोडकंट्रोल का उपयोग

public void Something() 
{ 
    var ascx = /*LoadControl*/("my.ascx"); // being Page = null 
    var ctl1 = ascx.Controls[0]; 
    var ctl2 = ascx.Controls[1]; 
} 

my.ascx:

<%@ Control Language="C#" %> 
<asp:Literal ID="ctl1" runat="server" /> 
<asp:Label ID="ctl2" runat="server" /> 
+0

मैं अगर यह किसी भी तरह उपयोगी है तो 'HttpContext.Current' है ... – BrunoLM

+0

क्या आपको लगता है कि अगर मैं पूछता हूं कि इसका उद्देश्य क्या है? क्या आपने एक अलग दृष्टिकोण माना है? –

+0

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

उत्तर

12

आप इस तरह से HttpContext से अपनी पृष्ठ-वस्तु प्राप्त कर सकते हैं:

Page page = HttpContext.Current.Handler as Page; 
if (page != null) 
{ 
    // Use page instance to load your Usercontrol 
} 
+0

क्या इस विधि का उपयोग करना संभव है, लेकिन Global_asax फ़ाइल से Application_Start में? मुझे विश्वास नहीं है कि ग्लोबल एक पेज पर डालेगा। – Corgalore

+0

आप एप्लिकेशन_स्टार्ट पर पृष्ठ-उदाहरण क्यों देखते हैं, जिसे एप्लिकेशन जीवनकाल में केवल एक बार कहा जाता है? –

+0

मैं एप्लिकेशन स्टार्टअप पर UserControls लोड करने और उनके कोड निष्पादित करने का प्रयास कर रहा था। यह एक छद्म प्लगइन तंत्र था। – Corgalore

-1

LoadControl पृष्ठ की एक विधि नहीं है, यह एक विधि है नियंत्रण वर्ग के।

तुम बस Page.LoadControl()

+1

LoadControl टेम्पलेट नियंत्रण कक्षा में परिभाषित किया गया है। यह पेज और उपयोगकर्ता नियंत्रण कक्षाओं के लिए उपलब्ध है, लेकिन नियंत्रण (या कंपोजिट कंट्रोल) नहीं है। – AaronSieb

3

तुम हमेशा एक पेज का एक नया उदाहरण बना सकते हैं करने के बजाय अपने नियंत्रण में LoadControl() का उपयोग कर सकते हैं अगर आप एक नहीं है:

(Page ?? new Page()).LoadControl(...) 
संबंधित मुद्दे