ASP.NET UserControls - как сделать поле содержимого доступным из кода aspx? - PullRequest
0 голосов
/ 30 марта 2009

Я не могу найти хорошую статью, которая решает мою следующую проблему, поэтому, если у кого-то есть ответ или просто ссылка на ответ, я был бы рад.

Допустим, я создал UserControl с именем MyUserControl.ascx

Я прописал это в ascx с префиксом uc

<uc:MyUserControl runat="server" id="uc_test" SomeProperty="true">
<InnerContent>
  ...
  Controls added in here....
  <asp:Button runat="server" id="btn_test" Text="Test">
  ...
<InnerContent>
</uc:MyUserControl>

Я знаю, как создать пользовательский контроль и как добавить в него свойства и события.

НО, как мне сделать поле "InnerContent" в моем usercontrol?

Понятия не имею, поэтому, пожалуйста, будьте немного конкретнее:)

Приветствия

Ответы [ 3 ]

2 голосов
/ 30 марта 2009

Вы обычно не делаете это с пользовательскими элементами управления (.ascx). Впрочем, это вполне возможно. В основном это делается в пользовательских элементах управления, которые вы создаете с использованием файлов кода. Для этого вы объявляете свой класс управления следующим образом:

[ParseChildren(true), PersistChildren(false)]
public class MyControl : Control, INamingContainer {

   [PersistenceMode(PersistenceMode.InnerProperty),
    TemplateContainer(InnerContentTemplate)]
   public ITemplate InnerContent { get; set; }

   void CreateChildControls() { 
       InnerContentTemplate temp = new InnerContentTemplate();
       InnerContent.InstantiateIn(temp);
       Controls.Add(temp);
   }
}

public class InnerContentTemplate : Control, INamingContainer {

}

Для .ascx файлов вы можете наследовать его от UserControl.

Создание шаблонов в ASP.NET - довольно сложная вещь. На самом деле невозможно все объяснить в ответе. Вы должны посмотреть на некоторые образцы и документацию.

0 голосов
/ 30 марта 2009

В дополнение к комментариям к ответу Мерхдада: Это работает для меня, но я не могу найти способ вернуть элементы управления, которые я добавил в шаблон, снова. Есть какие-нибудь быстрые подсказки для меня на этот? - Настоящий Napster (14 минут назад) Пробовал Control.FindControl метод? - Mehrdad (8 минут назад)

..................

Шаблон можно найти, открыв панель, к которой я его добавил. Примерно так:

pnl_content.Controls[index]

но я понятия не имею, как получить элементы управления из шаблона ..

Вот так выглядит мой код:

<uc:PopupOKCancel ClientInstanceName="pop_createCompany" runat="server" ID="pop_createCompany" OKButtonText="opret" HeaderText="Opret nyt firma">
     <ContentTemplate>
           <uc:CompanyDetails runat="server" id="uc_companyDetails"></uc:CompanyDetails>
     </ContentTemplate>
</uc:PopupOKCancel>

CompanyDetails UserControl, кажется, на самом деле не существует ... Кажется, что существует только шаблон ... Я попытался добавить некоторые свойства в класс Template, чтобы я мог их установить и получить, но это было невозможно ... какая-то причина.

0 голосов
/ 30 марта 2009

Вы хотите создать шаблонный элемент управления, скорее как Repeater (т. Е. У вас есть область ItemTemplate, а также заголовки и wotnot). Здесь является примером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...