这个问题可能已经被问到,但我找不到任何引用它,所以我道歉,如果它看起来像一个重复的问题。带有HTML内容占位符的ASP.NET Generic UserControl
我想要做的是创建一个通用的DialogBox
作为ASP.NET UserControl;其中将包含使用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
2014-09-03 21:24:37