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