Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is ctl00 a constant in ASP NET?

I need to reference a control in my web app that was generated with the use of a master page. The name of the control in the HTML becomes something like this "ctl00$MainContent$ListBox1". Can I safely do this in the code?

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

PS. I cannot use ClientID property because this code is called from InitializeCulture() override.

like image 401
ahmd0 Avatar asked Jul 06 '11 03:07

ahmd0


2 Answers

You could, but what I do is set the MasterPage ID in my 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"; 
}
like image 105
Code Maverick Avatar answered Sep 22 '22 11:09

Code Maverick


ctl00 is the generated ID of your masterpage. In the code-behind, you can set this.ID to whatever you want and any sub-content will be prefixed with that ID instead.

The problem with the code you have above is you're relying on a magic string for a control ID - you need to be careful with this as controls get moved into user controls and master pages become nested. I'm not sure why you can't use ListBox1.SelectedValue?

like image 37
Keith Avatar answered Sep 22 '22 11:09

Keith