Как я могу получить доступ к серверному элементу управления из кода asp.net за файлом, используя отражение? - PullRequest
0 голосов
/ 23 июля 2010

Например, если у меня есть на странице aspx:

<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;
}

Я мог бы получить желаемый результат, используя оператор switch и задав конкретное свойство элемента управления, но я бы хотел использовать отражение, чтобы получить вкладку, чтобы сделать ее чище.

Может ли кто-нибудь помочь?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 23 июля 2010

Вам не нужно отражение.Используйте Page.FindControl :

foreach(var id in enabledTabs.Split(','))
{
    PlaceHolder control = (PlaceHolder)this.FindControl("tab_"+id));
    control.Visible = true;
}
1 голос
/ 23 июля 2010
foreach(var id in enabledTabs.Split(',')) 
{      

    // Set property of the tab
    Page.FindControl("tab_" + id.ToString()).Visible = true;
}
0 голосов
/ 23 июля 2010

Попробуйте следующее:

Control tab = Control.FindControl("tab_"+id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...