如何在特定位置呈现用户控制子项?

时间:2010-01-07 22:57:45

标签: c# asp.net

我有一个非常简单的用户控件,如下所示:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="wfWindow.ascx.cs" Inherits="webfanatix.co.za.wfWindow" %>
<div>Just a test...[x]</div>

这个代码背后:

[ParseChildren(false)]
[PersistChildren(true)]
public partial class wfWindow : System.Web.UI.UserControl
{
    protected override void Render(HtmlTextWriter writer)
    {
        RenderChildren(writer);
    }
}

其用法如下:

<wf:wfWindow runat="server">This content should go where [x] is.</wf:wfWindow>

我不是ASP.NET专业版,所以如何让内容准确呈现[x]出现在用户控件中的位置?

RenderChildren正在渲染我的内容,但它只会附加到UserControl输出的末尾。我需要它去坐在[x]标记点的地方。

提前致谢!

2 个答案:

答案 0 :(得分:2)

将[X]更改为自己的控件,可以容纳其他控件,例如占位符或面板。

然后覆盖AddParsedSubObject()。默认实现只是将控件添加到usercontrol的Controls集合中 - 这意味着它们会被添加到结尾。覆盖它以将它们添加到占位符。

   protected override void AddParsedSubObject(Object obj) 
   {
         PanelWhereXIs.Add(obj);
   }

答案 1 :(得分:1)

如果您希望实现决定放置内容的位置,请查看templated user controls

否则,使用占位符控件并覆盖AddParsedSubObject方法