Возможно, этот вопрос уже задан, но я не мог найти ссылки на него, поэтому я приношу свои извинения, если это похоже на дублирующий вопрос.ASP.NET Generic UserControl с Html Content Placeholder
Что я пытаюсь сделать, это создать общий DialogBox
как пользовательский UserControl ASP.NET; который будет содержать весь скрипт, необходимый для создания диалога, используя jQuery
. Диалог имеет фиксированный набор кнопок, но я хочу, чтобы пользователь мог определить контент при создании диалога. Предположу, что это разметка для пользовательского элемента управления:
<head>
<script type="text/javascript">
// jQuery script to create the dialog
</script>
</head>
<body>
<div runat="server" id="divContainer">
<!--Html Content Placeholder. What goes here?-->
</div>
</body>
И фоновый код:
[ParseChildren(true, "Contents")]
public partial class UCDialogBox : ExtendedUserControl
{
protected void Page_Load(object sender, EventArgs e)
{
Page.DataBind();
}
public List<Control> Contents { get; set; }
public DialogType Type { get; set; }
public string Title { get; set; }
}
А на фактической странице после регистрации элемента управления, я хотел, чтобы быть в состоянии сделать что-то вроде этого:
<uc:DialogBox runat="server">
<div>
<label>Hello World</label>
</div>
</uc:DialogBox>
проблема с этим, List<Control>
позволяет только для элементов управления ASP.NET. Обычный HTML-контроль (например, то, что у меня выше) не будет работать.
Вопрос 1: Какой тип следует использовать, чтобы позволить любому элементу управления HTML быть вложенным в пользовательский элемент управления? Я пробовал System.Web.UI.HtmlControls.HtmlControl
, но это тоже не сработало (ASP.NET говорит The element 'div' cannot be nested within the element 'dialogbox'
).
Вопрос 2 Что бы я поставил в качестве заполнителя HTML контента на пользовательский элемент управления, который может быть связан к Contents
собственности на код позади? Что-то вроде
<SomePlaceholderControl DataSource="<%# Contents %>" />
Любая помощь приветствуется.
Проблема с переопределением 'Render()' заключается в том, что на странице есть другие элементы управления, которые я не хочу принудительно отображать вручную. Использование 'List' действительно работало, это был просто дизайнер, который ныл о нем. Спасибо хоть! –
PoweredByOrange