2011-07-06 5 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。このコードはInitializeCulture()オーバーライドから呼び出されるため、ClientIDプロパティは使用できません。

答えて

12

あなたはできますが、私がやっていることは私のInit()でマスターページIDを設定されている:

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は、あなたのマスターページの生成IDです。コードビハインドでは、this.IDを任意の値に設定することができ、サブコンテンツの前にそのIDのプレフィックスが付けられます。

上記のコードの問題は、コントロールIDの魔法の文字列に依存していることです。コントロールがユーザーコントロールに移動され、マスターページがネストされるため、これに注意する必要があります。なぜあなたはListBox1.SelectedValueを使用できないのか分かりませんか?

+0

> ListBox1.SelectedValueを使用できない理由はわかりませんか? > PS。このコードはInitializeCulture()オーバーライド**から呼び出されるため、ClientIDプロパティは使用できません**。 – ahmd0

関連する問題