2010-07-23 20 views
0

举例来说,如果我有aspx页面上:如何从使用反射的文件后面的asp.net代码访问服务器端控件?

<asp:PlaceHolder ID="tab_0" runat="server" Visible="false"></asp:PlaceHolder> 
<asp:PlaceHolder ID="tab_1" runat="server" Visible="false"></asp:PlaceHolder> 

,我想使用从配置文件中的值,例如

string enabledTabs = "0,1,2,3"; 

在代码中访问页面后面这些属性,如果有一个我可以使用反射来将它们设置为启用或禁用,例如

foreach(var id in enabledTabs.Split(',')) 
{ 
    // <use reflection to get the correct tab control> 

    // Set property of the tab 
    tab.Visible = true; 
} 

我可以acheive我想通过使用switch语句,并设置特定的控件属性的结果,但我想使用反射来获取的标签,使之清洁。

任何人都可以帮忙吗?

谢谢!

回答

3

你不需要反思。使用Page.FindControl

foreach(var id in enabledTabs.Split(',')) 
{ 
    PlaceHolder control = (PlaceHolder)this.FindControl("tab_"+id)); 
    control.Visible = true; 
} 
+0

+1前缀只是通过'tab_'并追加数量上形成的ID。 – James 2010-07-23 13:21:44

+0

你们如何快速回复?!非常感谢你! – Raj 2010-07-23 14:17:17

1
foreach(var id in enabledTabs.Split(',')) 
{  

    // Set property of the tab 
    Page.FindControl("tab_" + id.ToString()).Visible = true; 
} 
0

尝试以下操作:

Control tab = Control.FindControl("tab_"+id); 
相关问题