Я ищу это по всему Интернету, в том числе и здесь, уже 2 дня, но я не могу найти ничего подобного, с чем сталкиваюсь.Кроме того, это мой первый пост о переполнении стека, поэтому потерпите меня, пожалуйста:]
Проблема:
Я впервые создаю шаблонный серверный элемент управления, но я выполнил это безпроблемы с помощью MSDN по шаблонным темам.Я реализовал элемент управления, который можно использовать следующим образом:
<test:TemplatedControl ID="templatedControl" runat="server">
<Template>
Template start:
<%# Container.EmailText %>
<%# Container.EmailField %>
Template end.
</Template>
</test:TemplatedControl>
Элемент управления использует следующий контейнер / контекст для шаблона:
public class TemplateContainer : WebControl, INamingContainer
{
public string EmailText
{
get
{
return this.emailLabelText;
}
}
string emailLabelText;
public TextBox EmailField
{
get
{
return this.emailField;
}
}
TextBox emailField;
public TemplateContainer()
: base(HtmlTextWriterTag.Div)
{
this.BorderWidth = 2;
this.BorderStyle = BorderStyle.Outset;
this.emailLabelText = "E-mail:";
this.emailField = new TextBox();
this.emailField.MaxLength = 10;
}
}
Оба свойства класса контейнера работают нормальнои доступны через выражения привязки данных при написании шаблона, но EmailField отображается как System.Web.UI.WebControls.TextBox, что нормально для данного кода.Выходные данные элемента управления:
<div style="border-width:2px;border-style:Outset;">
Template start:
E-mail:
System.Web.UI.WebControls.TextBox
Template end.
</div>
Теперь вопрос: Возможно ли вывести элемент управления (например, TextBox здесь) в качестве фактического элемента управления обратно в шаблон в качестве других данных через выражения привязки?
Если бы это было возможно, тогда можно было бы выделить выходные данные этого элемента управления, включая его дочерние элементы управления, и при необходимости собрать их вместе с помощью шаблона.
IЯ боюсь, что этого вообще невозможно достичь, но я бы хотел, чтобы кто-то разъяснил это.Если это так, я также открыт для предложений другого подхода.Если вас интересует, почему я пытаюсь это сделать, прочитайте ниже.
Причина такого подхода:
Я создаю составной серверный элемент управления, который клиент сам будет использовать на своем сайте., который все еще находится в разработке.Поэтому окончательные требования к макету и форматированию для вывода элемента управления еще не известны.Вместо этого элемент управления должен иметь гибкий вывод с точки зрения как макета, так и дизайна, поэтому его можно настроить так, чтобы он соответствовал сайту позже.
Эта часть дизайна может быть реализована путем установки некоторых свойств класса CSS дляэлемент управления, хотя это может быть беспорядок для настройки для клиента, так как вывод элемента управления будет довольно сложным.
Я не уверен в том, как выполнить настраиваемое требование макета, например, визуализировать поля формы внутриструктура таблицы, или ее рендеринг в div, или, может быть, просто встраивание без дополнительного HTML и т. д.
Поэтому вместо того, чтобы предоставлять несколько заранее подготовленных типов вывода, я пришел к мысли, что вывод, представленный моим управлениемможет быть шаблонным, что может решить проблему как компоновки, так и гибкости дизайна.Заказчик декларативно установил бы шаблон, чтобы обернуть вокруг того, что должен отображать мой шаблон, что также позволило бы ему установить все свои классы CSS прямо там, чтобы обернуть элементы по мере необходимости.И это приводит меня к вышеупомянутой проблеме и вопросу.
Заранее спасибо,
Гаркин