Я пытаюсь создать действительно простой шаблонный элемент управления.Я никогда не делал этого раньше, но я знаю, что многие из моих элементов управления, которые я создал в прошлом, получили бы большую пользу, если бы я включил возможность шаблонизации - так что я учусь сейчас.
Проблема, которую я имею, состоит в том,что мой шаблон выводится на странице, но значение моего свойства - нет.Поэтому все, что я получаю, - это статический текст, который я включаю в свой шаблон.
Я должен что-то делать правильно, потому что элемент управления не вызывает ошибок, поэтому он знает, что мое публичное свойство существует.(например, если я пытаюсь использовать Container.ThisDoesntExist, он выдает исключение).
Буду признателен за помощь в этом.Я, может быть, просто полный маппет и чего-то не хватает.Онлайновые учебные пособия по простым шаблонным серверным элементам управления кажутся немногочисленными, поэтому, если вы знаете один, я бы хотел узнать об этом.
Ниже приведена сокращенная версия моего кода.
Большое спасибо, Джеймс
Вот мой код для элемента управления:
[ParseChildren(true)]
public class TemplatedControl : Control, INamingContainer
{
private TemplatedControlContainer theContainer;
[TemplateContainer(typeof(TemplatedControlContainer)), PersistenceMode(PersistenceMode.InnerProperty)]
public ITemplate ItemTemplate { get; set; }
protected override void CreateChildControls()
{
Controls.Clear();
theContainer = new TemplatedControlContainer("Hello World");
this.ItemTemplate.InstantiateIn(theContainer);
Controls.Add(theContainer);
}
}
Вот мой код для контейнера:
[ToolboxItem(false)]
public class TemplatedControlContainer : Control, INamingContainer
{
private string myString;
public string MyString
{
get
{
return myString;
}
}
internal TemplatedControlContainer(string mystr)
{
this.myString = mystr;
}
}
Вот моя разметка:
<my:TemplatedControl runat="server">
<ItemTemplate>
<div style="background-color: Black; color: White;">
Text Here: <%# Container.MyString %>
</div>
</ItemTemplate>
</my:TemplatedControl>