2011-07-06 13 views
8

मुझे अपने वेब ऐप में एक नियंत्रण का संदर्भ देना होगा जो मास्टर पेज के उपयोग से उत्पन्न हुआ था। एचटीएमएल में नियंत्रण का नाम इस तरह के "ctl00 $ मुख्य सामग्री $ ListBox1" बन जाता है। क्या मैं कोड में सुरक्षित रूप से ऐसा कर सकता हूं?सीएसएल 00 एएसपी नेट में स्थिर है?

string strName = "ctl00$MainContent$ListBox1"; 
if (Request.Form[strName] != null) 
{ 
String selectedLanguage = Request.Form[strName]; 
} 

पीएस। मैं क्लाइंट आईडी संपत्ति का उपयोग नहीं कर सकता क्योंकि इस कोड को InitializeCulture() ओवरराइड से कहा जाता है।

उत्तर

12

आप कर सकते थे, लेकिन मैं क्या मेरी Init() में masterpage आईडी सेट है:

protected void Page_Init(object sender, EventArgs e) 
{ 
    // this must be done in Page_Init or the controls 
    // will still use "ctl00_xxx", instead of "Mstr_xxx" 
    this.ID = "Mstr"; 
} 
+0

दोस्त, मैं आज पूरे दिन दीवार के खिलाफ अपने सिर को टक्कर लगी हूं और आपने इसे कोड की 2 लाइनों के साथ तय किया है। धन्यवाद!!! – ahmd0

+0

कोई समस्या नहीं है! मैं वहां गया हूं ... –

2

ctl00 अपने masterpage के द्वारा उत्पन्न ID है। कोड-बैक में, आप जो भी चाहें this.ID सेट कर सकते हैं और इसके बजाय किसी भी उप-सामग्री को उस आईडी के साथ प्रीफ़िक्स किया जाएगा।

आपके ऊपर दिए गए कोड के साथ समस्या यह है कि आप नियंत्रण आईडी के लिए एक जादू स्ट्रिंग पर भरोसा कर रहे हैं - आपको इसके साथ सावधान रहना होगा क्योंकि नियंत्रण उपयोगकर्ता नियंत्रण में स्थानांतरित हो जाता है और मास्टर पेज घोंसला बन जाते हैं। मुझे यकीन नहीं है कि आप ListBox1.SelectedValue का उपयोग क्यों नहीं कर सकते?

+0

> मुझे यकीन नहीं है कि आप ListBox1 का उपयोग क्यों नहीं कर सकते हैं। चयनित वैल्यू? > पी एस। मैं क्लाइंट आईडी संपत्ति का उपयोग नहीं कर सकता ** क्योंकि इस कोड को InitializeCulture() से ओवरराइड ** कहा जाता है। – ahmd0

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