在.NET NET中ctl00是常量吗?

时间:2011-07-06 03:21:45

标签: asp.net master-pages

我需要在我的网页应用中引用一个使用母版页生成的控件。 HTML中控件的名称变为类似“ctl00 $ MainContent $ ListBox1”。我可以在代码中安全地执行此操作吗?

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

PS。我无法使用ClientID属性,因为此代码是从InitializeCulture()覆盖。

调用的

2 个答案:

答案 0 :(得分: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"; 
}

答案 1 :(得分:2)

ctl00是您的母版页的生成ID。在代码隐藏中,您可以将this.ID设置为您想要的任何内容,而任何子内容都将以该ID为前缀。

上面代码的问题在于你依赖于一个魔术字符串作为控件ID - 你需要小心这一点,因为控件会被移动到用户控件中并且母版页会嵌套。我不确定为什么你不能使用ListBox1.SelectedValue