2

例如,我有一个名为 SampleControl 的自定义控件。为了简化这个问题,假设我只是从头开始制作面板控制克隆。

<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 注册。当我在面板控件上做反射器时,我不知道他们是如何让中间控件渲染的。看起来他们没有使用模板化控件。

当我这样做时,我收到此错误:

解析器错误描述:解析服务此请求所需的资源时发生错误。请查看以下特定的解析错误详细信息并适当地修改您的源文件。

有任何想法吗?

4

1 回答 1

6

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

然后确保在 Render 中的某个地方调用了 RenderChildren 方法。它是 System.Web.UI.Control.Render() 的默认实现,因此您可以在覆盖的 Render 方法中执行 base.Render(writer)。

于 2008-10-22T09:23:34.860 回答