Как управлять элементами на главной странице 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