【问题标题】:How do I make the children appear in a custom webcontrol for ASP.NET?如何让孩子出现在 ASP.NET 的自定义 web 控件中?
【发布时间】:2008-10-22 09:14:41
【问题描述】:

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

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

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

有什么想法吗?

【问题讨论】:

    标签: asp.net web-control


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-02
      相关资源
      最近更新 更多