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 s开发者_开发技巧afely 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.
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";
}
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
?
精彩评论