2010-01-07 8 views
3

У меня есть очень упрощенный пользовательский элемент управления, который выглядит следующим образом:Как отображать дочерние элементы управления пользователя в определенном месте?

<%@ 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> 

Я m нет ASP.NET pro, так как мне получить контент для рендеринга, где [x] появляется в моем пользовательском элементе управления?

RenderChildren предоставляет мой контент, но он добавляется только к концу вывода UserControl. Мне нужно, чтобы он сидел прямо там, где [x] отмечает это место.

Заранее благодарен!

+0

Это очень просто реализовать такое поведение с помощью PHP. –

ответ

1

Если вы хотите, чтобы реализация решала, где разместить контент, посмотрите на templated user controls.

В противном случае, используйте элемент управления шаблонным и переопределить метод AddParsedSubObject

2

Изменения [X] в контроль его собственного, который может содержать другие элементы управления, такие как заполнитель или панель.

Затем переопределить AddParsedSubObject(). По умолчанию это просто добавляет элементы управления в коллекцию Controls usercontrol, что означает, что они добавляются в конец. Переопределите это, чтобы добавить их в ваш placeholder.

protected override void AddParsedSubObject(Object obj) 
    { 
     PanelWhereXIs.Add(obj); 
    } 
Смежные вопросы