Я создал шаблонный UserControl. Я не хочу раздувать это сообщение, публикуя весь код, который я использовал для создания элемента управления, но достаточно сказать, что я уверен, что код верен. Я опубликую несколько фрагментов, чтобы показать, что я знаю правильный способ сделать это. Во-первых мой ITemplate реализация:Значения данных контейнера не проходят через шаблонный пользовательский элемент управления
private ITemplate _NutritionLabelTemplate = null;
[TemplateContainer(typeof(NutritionLabelContainer))]
[PersistenceMode(PersistenceMode.InnerProperty)]
public ITemplate NutritionLabelTemplate
{
get { return _NutritionLabelTemplate; }
set { _NutritionLabelTemplate = value; }
}
Тогда реализация моего INamingContainer интерфейса:
public class NutritionLabelContainer : Control, INamingContainer
{
}
Мой шаблон разметки имеет контроль Placeholder под названием «phNutritionLabel_Template» и режущую через другой бла-бла-бла, я» ве получил что-то вроде:
phNutritionLabel_Template.Controls.Clear();
if (NutritionLabelTemplate != null)
{
NutritionLabelContainer nContainer = new NutritionLabelContainer();
nContainer.calcium = calcium;
nContainer.calories = calories;
NutritionLabelTemplate.InstantiateIn(nContainer);
phNutritionLabel_Template.Controls.Add(nContainer);
}
После этого я добавляю этот шаблонный UserControl к моей веб-странице и проверить его добавить следующий код:
<uc1:NutritionalLabel_Template ID="NutritionalLabel_Template1" runat="server"
servingSize="28"
calories="46">
<NutritionLabelTemplate>
<h1>Template Calories</h1>
<span style="font-size:large; font-style:italic;"></span>
<asp:Label ID="Label1" runat="server">
<%#Container.calories %>
</asp:Label>
<br />
</NutritionLabelTemplate>
</uc1:NutritionalLabel_Template>
Когда я запустил страницу, значение # Container.calories не видно, оно полностью пустое. Я отлаживал свой код и проходил через него. Я вижу, что значения явно устанавливаются в NamingContainer Templated Control и что значения переносятся на Placeholder через NamingContainer.
Я также могу проверить, что значения установлены, поместив следующий код в файл с кодом на веб-странице, а затем увидите значения, отраженные на странице. Но в остальном ничего.
Label1.Text = NutritionalLabel_Template1.calories;
Я видел, что эта проблема возникает раньше и не может запомнить, в чем причина или разрешение. Может ли кто-нибудь предоставить какие-либо указатели?
Я несколько раз создавал эти типы элементов управления, поэтому для меня это немного ново. Любая помощь будет оценена по достоинству. Я упал.
Thx