在ASP.NET中,ctl00是一个常量吗?

9

我需要引用使用主页生成的Web应用程序中的控件。 在HTML中,该控件的名称变得像这样“ctl00 $ MainContent $ ListBox1”。我能否在代码中安全地执行此操作?

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

PS. 我无法使用ClientID属性,因为此代码是从InitializeCulture()重写中调用的。

2个回答

13

你可以这样做,但我通常会在Init()中设置我的MasterPage 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"; 
}

老兄,我今天整天都在为这个问题苦苦思索,而你用两行代码就解决了它。谢谢你! - ahmd0

3

ctl00是你的主页生成的ID。在代码后端,你可以将this.ID设置为任何你想要的内容,所有子内容都将以该ID为前缀。

你上面的代码问题在于,你依赖于控件ID的魔术字符串 - 你需要小心处理,因为控件会被移动到用户控件中,主页也会变成嵌套的。我不确定为什么你不能使用ListBox1.SelectedValue


我不确定为什么您不能使用 ListBox1.SelectedValue ?PS. 我无法使用 ClientID 属性,因为该代码是从 InitializeCulture() 覆盖调用的。 - ahmd0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接