У меня есть несколько страниц на моем веб-сайте asp.net, на которых я хотел бы отключить элемент управления на главной странице. Есть ли способ связаться с главной страницей с дочерней страницы?
Как управлять элементами на главной странице asp.net с дочерней страницы
Ответы (5)
Самый простой способ - настроить свойство на главной странице, которое при вызове обрабатывает функцию включения / выключения. Затем на своей дочерней странице установите директиву MasterType, чтобы получить строго типизированную ссылку на вашу мастер-страницу, чтобы обойтись без трансляции.
На вашей дочерней странице будут:
<%@ MasterType VirtualPath="~/Site1.Master" %>
И чтобы вызвать свойство главной страницы:
Master.MyLabel = false; // or true
Итак, на вашем хозяине у вас может быть:
public bool MyLabel
{
get
{
return masterLabel.Enabled;
}
set
{
masterLabel.Enabled = value;
}
}
<%@ MasterType VirtualPath="~/Site1.Master" %>
Спасибо, сэр, мой голос за вас =)
- person Michel Ayres; 26.12.2012
Вам необходимо использовать директиву MasterType в разметке вашей страницы.
<%@ MasterType TypeName="Namespace.Etc.MyMasterPage" %>
Тогда вы сможете получить доступ к любым общедоступным свойствам главной страницы страницы, используя
this.Master.PropertyIWantToIntefereWith...
Надеюсь это поможет
Вот пример того, как взаимодействовать с мастер-страницами из дочерних страниц.
На главной странице создайте свойство для элемента управления, к которому вы хотите получить доступ, скажем, метку с именем lblUser ...
public string MyProperty
{
set { lblUser.Text = value; }
}
На дочерней странице перейдите к только что созданному свойству, как в следующем примере ...
((MyMaster)this.Master).MyProperty = "Text changed from Sub Page";
Мы можем это сделать, потому что Мастер - это просто класс, наследующий System.Web.UI.MasterPage.
А созданное нами свойство Label.Text является просто свойством мастер-класса (это имя будет конкретным именем вашей текущей мастер-страницы, в данном случае MyMaster).
Обратите внимание, что это не будет работать без приведения к вашему конкретному классу мастер-страницы, потому что вы добавили поле, которое не существует в System.Web.UI.MasterPage, тип this.Master, но в вашем конкретном мастер-классе.
Я искал что-то подобное, но это решение, похоже, мне не подходит. У меня есть вложенная главная страница. Это работает для вложенного мастера? Когда я реализовал, он не распознает элемент управления, который я добавил своему мастеру.