Как ссылаться на главную страницу из пользовательского элемента управления? - PullRequest
13 голосов
/ 06 января 2009

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

К сожалению, вы не можете использовать это в пользовательском элементе управления:

<%@ MasterType VirtualPath="~/Masters/Whatever.master" %>

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

Ответы [ 4 ]

18 голосов
/ 06 января 2009

Попробуйте Page.Master.

Whatever whatev = (Whatever)Page.Master;

Вам необходимо убедиться, что вы добавили правильные операторы using в начало вашего файла или указали тип встроенной главной страницы.

Одна потенциальная ошибка, если этот элемент управления используется другой страницей, главная страница которой НЕ имеет тот же тип. Это может быть пойман только во время выполнения.

0 голосов
/ 17 февраля 2019

В VB все, что мне нужно было сделать, это изменить это:

Dim lAuthLevel As Integer = Master.MasterContact.AuthenticationLevel

к этому:

Dim lAuthLevel As Integer = CType(Me.Page.Master, main).MasterContact.AuthenticationLevel

Таким образом, все ссылки Master становятся Ctype (Me.Page.Master, typeofMaster)

Где в этом случае слово "main" - взять это из объявления в верхней части главной страницы. например,

Так что "главное" в данном случае:)

0 голосов
/ 25 января 2010

Лучший способ сделать это, как я обнаружил, - это на самом деле создать собственный класс, основанный на UserControl, дать ему свойство Master с аксессором get, который перебирает this.Page.Parent, пока он не перестанет главные страницы (если вы вкладываете, этот шаг не нужен в противном случае), а затем верните этот веб-элемент управления в качестве типа главной страницы, которую вы хотите использовать. Затем, когда вы добавляете новый пользовательский элемент управления, измените его базовый класс на имя вашего пользовательского класса. Свойство .Master будет доступно и приведено в соответствие с главной страницей, которую вы хотите использовать.

0 голосов
/ 06 января 2009

Вы пробовали Page.FindControl ("имя") в пользовательском контроле?

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