ASP.NET - доступ к элементам главной страницы формирует страницу содержимого - PullRequest
7 голосов
/ 20 января 2009

Можно ли получить доступ к элементам главной страницы со страницы содержимого?

Допустим, у меня есть MasterPage1 и ContentPage1, который наследуется от MasterPage1, а у MasterPage1 есть кнопка: Button1.

Могу ли я изменить свойство этой кнопки со страницы содержимого, например, чтобы сделать Button1 невидимой, неактивной и т. Д.? Как мне это сделать?

Я использую .net2.0

Ответы [ 4 ]

11 голосов
/ 20 января 2009

Да ... если вам нужно сделать это со страницы aspx, используя MasterPage, это будет:

Button myButton = (Button)Master.FindControl("myButton");
myButton.Visible = false;
9 голосов
/ 20 января 2009

Вы должны поместить ссылку на MasterPage в вашей странице / пользовательской разметке элемента управления.

<%@ Reference VirtualPath="..." %>

Затем в коде вы просто приводите Page.MasterPage к своей MasterPage и получаете доступ к его свойствам.

MyMasterPage myMasterPage = (MyMasterPage)Page.Master;
4 голосов
/ 28 июля 2009

Master.FindControl ("myButton"). Visible = False

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

3 голосов
/ 20 января 2009

Да, могут, и есть несколько подходов к этому.

Подход, который я использую, заключается в создании открытых методов на главной странице, которые будут выполнять модификацию / доступ к данным на главной странице. Например, я обычно хотел бы изменить стиль ссылки текущей страницы / категории, на которой я нахожусь, поэтому у меня на главной странице есть метод, подобный этому:

   Public Sub SetNavigationPage(ByVal MenuName As String)

      DirectCast(Me.FindControl(MenuName), HyperLink).CssClass = "MenuCurrent"

   End Sub

Затем на своей странице контента я просто получаю доступ к этому методу как таковому:

Dim myMaster As EAF = DirectCast(Me.Master, EAF)
myMaster.SetNavigationPage("hypViewEmployee")

... где EAF - имя класса моей главной страницы.

Одна интересная проблема, которую я обнаружил, заключается в том, что у меня возникли сложности с использованием свойства Visibility элементов управления .NET при попытке показать / скрыть их таким образом. Это связано с рендерингом главной страницы и страниц контента. Чтобы решить эту проблему, я установил базовый стиль CSS для видимых и скрытых и соответственно установил свойство CssClass.

...