Отключить управление в .aspx от Masterpage условно - PullRequest
0 голосов
/ 05 июня 2009

Хорошо, это может быть немного странно, поэтому я начну с объяснения того, что я пытаюсь сделать. У меня есть несколько мастер-страниц для моего сайта, и они наследуют друг друга. Во втором из них (всего 4) у меня есть фоновое изображение. Здесь есть хитрость, я хотел бы переопределить это изображение с последней страницы ASPX. Я не могу изменить положение этого изображения, оно должно быть на главной странице 2, поскольку некоторые страницы используют эту страницу в качестве главной страницы.

Одна из моих идей заключалась в том, чтобы создать ContentPlaceHolder рядом с изображением, и если в нем есть какие-либо изображения (отметьте в Page_Load), то основное изображение будет скрыто. Я сделал это с помощью рекурсивной функции, которая находит изображение, просматривая элементы управления ContentPlaceHolder. Когда я устанавливаю для свойства видимости значение false, ничего не происходит.

Любые другие идеи о том, как это можно сделать, или почему выше не работает?

Редактировать: Речь идет не об изменении элементов на главных страницах, а об обратном, а о том, что из кода мастер-страниц вырываются на страницу, которая отображается в данный момент, и посмотрите, есть ли у нее элементы управления в определенном ContentPlaceHolder.

Ответы [ 3 ]

1 голос
/ 05 июня 2009

Мне удалось получить доступ к элементам управления на главной странице, например:

        Control control = Master.FindControl("ControlID");
        if (control is ControlType)
        {
            ControlType menu = control as ControlType;
            menu.Visible = false;
        }

не уверен, поможет ли это конкретно вашей проблеме.

0 голосов
/ 27 апреля 2010

Спасибо, Стивен,

Мне удалось отключить TreeView при загрузке мастер-страницы с defaultpage.aspx. Я поместил TreeView в ContentPlaceHolder с id = "cphtv" и id TreeView: TreeView1

Control control1 = Master.FindControl("cphtv");
if (control1 is ContentPlaceHolder)
{
    Label5.Text = "ContentPlaceHolder found";
    Control tc = control1.FindControl("TreeView1");
    if (tc is TreeView)
    {
        tc.Visible = false;
        Label6.Text = "tree view false";
    }
    else{
        Label6.Text = "tree view control  not found";

    }

}
else
{
    Label6.Text = "not found";
}
0 голосов
/ 05 июня 2009
...