2008-10-22 59 views
2

例如,我有一个名为SampleControl的自定义控件。为了简化这个问题,假装我只是从头开始制作面板控制克隆。如何让孩子出现在ASP.NET的自定义webcontrol中?

<CC:SampleControl ID="Sample1" runat="server"> 
    <asp:Label ID="Label1" runat="server" Text="Hi"></asp:Label> 
    <asp:Button ID="Button1" runat="server" Text="Button1"></asp:Label> 
</CC:SampleControl> 

到输出:

<div id="Sample1"> 
    <span id=Label1>Hi</span> 
    etc..... 
</div> 

对本规则是:

public class SampleControl: WebControl 
{ 
    .....Render Stuff Goes Here..... 
} 

中间的ASP控件不被ASP.NET注册。当我在Panel控件上做了一个Reflector时,我找不到他们如何得到中间控件来渲染。它看起来不像他们正在使用模板控制。

当我这样做,我得到这个错误:

分析器错误 说明:该请求提供服务所需资源的分析过程中发生错误。请检查以下特定的分析错误详细信息并适当修改您的源文件。

任何想法?

回答

6

首先,[ParseChildren(false)]属性让解析器知道您希望您的控件将嵌套内容视为子控件。

然后确保在渲染RenderChildren方法的某个地方被调用。这是System.Web.UI.Control.Render()的默认实现,所以你可以在你的重写渲染方法中使用base.Render(writer)。

相关问题