Получить доступ к пользовательскому элементу управления с вложенной главной страницы

#c# #asp.net

#c# #asp.net

Вопрос:

Есть ли способ получить доступ к свойству puplic пользовательского элемента управления с вложенной главной страницы?

Позвольте мне объяснить дальше

У меня есть 3 глубокие главные страницы

  1. global.master
  2. LargeTopNav.master (наследует global.master)
  3. LargeTopNav25-50-25.master (наследует LargeTopNav.master)
  4. feature.aspx — На этой странице я хотел бы получить доступ к пользовательскому элементу управления, который у меня есть на LargeTopNav.master, чтобы иметь возможность устанавливать свойство.

Я довольно новичок в .net, поэтому буду признателен за любую помощь.

Ответ №1:

Существует MasterType свойство, которое вы могли бы установить на странице feature.aspx, например:

 <%@ MasterType VirtualPath="~/masters/LargeTopNav.master" %>
  

Затем, в свою очередь, предоставьте доступ к свойству элемента управления через свойство, которое вы создаете в своем классе главной страницы LargeTopNav.master:

 public partial class LargeTopNavMaster : MasterPage
{
    // ...

    public string ThePropertyOfTheContainedControl
    {
        get { return MyContainedControl.TheProperty; }
        set { MyContainedControl.TheProperty = value; }
    }

    // ...
}
  

Наконец, на вашей странице feature.aspx откройте свойство главной страницы, которое обеспечивает доступ к базовому элементу управления:

 public partial class Feature : Page
{
    // ...

    protected void Page_Load( object sender, EventArgs e )
    {
        Master.ThePropertyOfTheContainedControl = "Some nice text.";
    }

    // ...
 }
  

Комментарии:

1. здесь очень запутался. MasterType может иметь два атрибута — устанавливать ли их в largeTopNav.master? Тогда как мне создать свойство с помощью класса largetopvan.master page?

2. Я очень, очень новичок в .net, я знаю достаточно, чтобы быть опасным 🙂

3. @nkuebelbeck Я добавил пример со страницы MSDN, смотрите выше.

4. свойство имеет тип enum. Итак, должен ли класс быть перечисляемым вместо string?

5. он жалуется на отсутствие } после первого ‘set’

Ответ №2:

Обычно то, что я делаю в этом сценарии, — это заставляю вашу главную страницу реализовать интерфейс (который будет иметь свойство для вашего пользовательского элемента управления), а затем с вашей страницы feature.aspx использовать this.Master (или this.Master.Master обязательно проверять null ), чтобы получить ссылку на главную страницу.

Затем просто введите главную страницу в свой интерфейс и получите доступ к свойству.