在服务器控件的OnLoad中,我想执行以下操作:
string username = Page.Request["UsernameTextBox"];
然后在CreateChildControls中创建实际的控件(所以我只需要在回发时执行此操作)。
问题是我不能以这种方式使用ID,因为这种情况下的控件必须通过名称引用。如果我硬代码,我可以通过这样做来解决问题:
string username = Page.Request["ctl02$ctl00$ctl02$ctl00$ctl02$ctl03$ctl03$ctl02$ctl01"];
当然,考虑到控制层次结构可能会发生变化,这将是一个糟糕的解决方案。所以我的问题是:我有办法在OnLoad中获取此控件名称。如果我能找到从NamingContainer计算名称的方法,或者我会没事的。
(我们不在这个登录控件/页面讨论这个奇怪的设计 - 把它当作我问题的常量)。
答案 0 :(得分:0)
您可以将用户名文本框的ClientIDMode属性设置为static。
http://msdn.microsoft.com/en-us/library/system.web.ui.clientidmode.aspx