#c# #asp.net
#c# #asp.net
Вопрос:
Есть ли способ получить доступ к свойству puplic пользовательского элемента управления с вложенной главной страницы?
Позвольте мне объяснить дальше
У меня есть 3 глубокие главные страницы
- global.master
- LargeTopNav.master (наследует global.master)
- LargeTopNav25-50-25.master (наследует LargeTopNav.master)
- 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
), чтобы получить ссылку на главную страницу.
Затем просто введите главную страницу в свой интерфейс и получите доступ к свойству.