Какой самый эффективный способ для элемента управления определить, отображается ли он в веб-форме или на главной странице? - PullRequest
0 голосов
/ 13 марта 2009

У меня есть элемент управления, который можно разместить в веб-форме (.aspx) или на главной странице (.master). Я хочу, чтобы он работал по-разному, в зависимости от того, в каком он находится.

Моя первая мысль - забраться на дерево элементов управления обратно в корень и посмотреть, пересекаю ли я элемент управления MasterPage. Если это так, то это должно быть на главной странице.

Но это кажется неэффективным. Есть ли лучший способ?

Ответы [ 2 ]

0 голосов
/ 13 марта 2009

Сначала проверьте, есть ли у страницы главная страница вообще. Затем просмотрите дерево управления, чтобы найти заполнитель содержимого:

public static bool IsInMaster(Control control) {
    if (control.Page.Master == null) return false;
    while (control != null) {
        if (control is ContentPlaceHolder) return false;
        control = control.Parent;
    }
    return true;
}
0 голосов
/ 13 марта 2009

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

Если элемент управления не будет отображаться на странице много раз, проход через NamingContainer будет более чем достаточен:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...