2011-07-06 56 views
8

我需要引用我的Web應用程序中使用母版頁生成的控件。 HTML中控件的名稱就像這樣「ctl00 $ MainContent $ ListBox1」。我可以在代碼中安全地執行此操作嗎?ASP NET中的ctl00是否爲常量?

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

PS。我無法使用ClientID屬性,因爲此代碼是從InitializeCulture()覆蓋中調用的。

回答

12

,你可以,但我做的是設置在母版ID在我Init()

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

老兄,我一直在敲打今天我的頭靠在牆上了整整一天了這一點,你用兩行代碼固定它。謝謝!!! – ahmd0

+0

完全沒問題!我一直在那裏... –

2

ctl00是你的母版的生成的ID。在代碼隱藏中,您可以將this.ID設置爲任何您想要的內容,而任何子內容都將以該ID爲前綴。

與你有上面是你依靠一個神奇的字符串控制ID碼的問題 - 你需要謹慎使用該作爲對照得到搬進用戶控件和母版頁成爲嵌套。我不確定你爲什麼不能使用ListBox1.SelectedValue

+0

>我不知道爲什麼你不能使用ListBox1.SelectedValue? > PS。我無法使用ClientID屬性**,因爲此代碼是從InitializeCulture()覆蓋**調用的。 – ahmd0

相關問題