Я пишу то, что назову системой опросов. Опросы будут состоять из серии вопросов, разбитых на разделы. Определения опроса будут сохранены в базе данных. Вопросы могут быть разных типов, которые имеют разные методы ввода и проверки (например, текстовое поле, числовое текстовое поле, список выбора и т. Д.). Я создаю набор пользовательских элементов управления, которые сопоставляются с различными типами вопросов. Я хотел бы полностью абстрагировать логику рендеринга опроса от логики определения опроса. Я подумал, что смогу сделать это, используя простой элемент управления рендерингом, который просто берет набор элементов управления и отображает их в каждом цикле как упрощенную версию того, что я делаю.
private void RenderControls()
{
foreach (UserControl CurrentControl in this.ControlsToRender)
{
MyPlaceholder.Controls.Add(CurrentControl)
}
}
Это работает в том смысле, что в заполнитель добавляются правильные элементы управления, однако ничего не отображается. Предположительно, это потому, что у него нет разметки в файле asxc.
Если я сделаю что-то подобное
private void RenderControls()
{
foreach (UserControl CurrentControl in this.ControlsToRender)
{
MyPlaceholder.Controls.Add(this.LoadControl("path to ascx file")
}
}
Это создаст правильное количество элементов управления, но я не хочу создавать здесь экземпляры элементов управления, потому что мне нужно было бы установить различные свойства на основе условной логики, которую я хочу абстрагировать от этого чистого слоя рендеринга.
я хочу создать экземпляры элементов управления else, где установить соответствующие свойства, а затем просто передать их набор в элемент управления визуализацией для визуализации.
Есть ли способ сделать это с помощью пользовательских элементов управления? Должен ли я вместо этого создавать собственные элементы управления?