我想创建一个像一个控件Panel.
我希望我的控件接受一些控件作为孩子而不键入模板名称,就像Panel,如下所示:
<asp:Panel runat="server">
My content
<div>Content</div>
</asp:Panel>
Run Code Online (Sandbox Code Playgroud)
我有内容控件,而不知道是什么ITemplate.
我基本上想转换它
<my:MyControl runat="server">
<ContentTemplate>
My content
<div>Content</div>
</ContentTemplate>
</my:MyControl>
Run Code Online (Sandbox Code Playgroud)
进入这个
<my:MyControl runat="server">
My content
<div>Content</div>
</my:MyControl>
Run Code Online (Sandbox Code Playgroud)
这是我得到的:
public class MyControl : CompositeControl
{
[TemplateInstance(TemplateInstance.Single)]
public ITemplate Content { get; set; }
protected override void CreateChildControls()
{
base.CreateChildControls();
Content.InstantiateIn(this);
}
}
Run Code Online (Sandbox Code Playgroud)
以上工作与<Content></Content>控件内的标签,但没有它不起作用.该属性根本没有做任何事情(我猜).少了什么东西?
我怎样才能实现它?任何提示?为什么Panel支持这个?
我搜索过该网站,但我无法找到解决问题的方法,所以如果已经得到解答,我会道歉(我确定有人必须先问过这个问题).
我编写了一个jQuery Popup窗口,我将其打包为WebControl和IScriptControl.最后一步是能够在我的控件的标签内写入标记.我已经使用了InnerProperty属性几次,但仅用于包含强类型类的列表.
这是我在WebControl上的属性:
[PersistenceMode(PersistenceMode.InnerProperty)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public something??? Content
{
get
{
if (_content == null)
{
_content = new something???();
}
return _content;
}
}
private something??? _content;
Run Code Online (Sandbox Code Playgroud)
这是我所追求的HTML标记:
<ctr:WebPopup runat="server" ID="win_Test" Hidden="false" Width="100px" Height="100px"
Modal="true" WindowCaption="Test Window" CssClass="window">
<Content>
<div style="display:none;">
<asp:Button runat="server" ID="Button1" OnClick="Button1_Click" />
</div>
<%--Etc--%>
<%--Etc--%>
</Content>
</ctr:WebPopup>
Run Code Online (Sandbox Code Playgroud)
不幸的是我不知道我的Content属性应该是什么类型.我基本上需要复制UpdatePanel的ContentTemplate.
编辑:所以以下允许自动创建一个模板容器,但没有控件出现,我正在做什么错了?
[PersistenceMode(PersistenceMode.InnerProperty)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public ITemplate Content
{
get
{
return _content;
}
set
{
_content = value;
}
}
private ITemplate …Run Code Online (Sandbox Code Playgroud)