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

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

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

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

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

Ответы

Ответ 1

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

Whatever whatev = (Whatever)Page.Master;

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

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

Ответ 2

Пробовали ли вы Page.FindControl( "имя" ) в usercontrol?

Ответ 3

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