例如,我有一个名为SampleControl的自定义控件。为了简化这个问题的事情,假装我从头开始制作一个Panel Control克隆。
<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.NET中没有注册中间的ASP控件。当我在Panel控件上做了一个Reflector时,我无法找到他们如何获得渲染的中间控件。它看起来不像是使用模板化控件。
当我这样做时,我收到了这个错误:
分析器错误 说明:解析为此请求提供服务所需的资源时发生错误。请查看以下特定的解析错误详细信息并适当修改源文件。
任何想法?
答案 0 :(得分:6)
首先,[ParseChildren(false)]属性让解析器知道您希望控件将嵌套内容视为子控件。
然后确保调用Render RenderChildren方法中的某个地方。它是System.Web.UI.Control.Render()的默认实现,因此您可以在覆盖Render方法中执行base.Render(writer)。