Membungkus kontrol pengguna di dalam tag kontrol pengguna lain dalam file ascx

Saya telah mencari berjam-jam tentang masalah ini, tetapi entah saya benar-benar buruk dalam membuat kueri Google atau tidak banyak informasi tentang ini.

Saya mencoba membangun kontrol pengguna yang dapat "membungkus" kontrol pengguna lain di dalamnya, persis sama seperti yang dilakukan <asp:Panel>. Anggap saja sebagai panel yang dimuliakan (sebenarnya, memang begitulah adanya).

Idealnya, saya ingin membuat sesuatu seperti ini:

<muc:MyUserControl ID="parentControl" runat="server" etc>
    <mouc:MyOtherUserControl ID="childControl" runat="server" etc>
    </mouc>
</muc>

Apa yang saya coba bangun adalah kontrol pengguna parentControl, dan membuatnya "membaca" apa pun yang ada di dalamnya dan menampilkan/memformatnya dengan cara tertentu (sebenarnya, masukkan saja ke dalam salah satu panelnya).

Mungkin ini bukan cara yang tepat, jadi tolong arahkan saya ke arah yang benar.

Terima kasih!

EDIT:

Setelah rendering, ini akan menjadi html ideal yang dirender:

<div id="parentControl">
    <div>
        Stuff from parent (controls, html elements, etc)
    </div>
    <div class="childWrapper">
        <div id="childControl1" class="childControl">
        </div>
    </div>
</div>

PS: Saya tahu tentang kontrol yang ditambahkan secara dinamis di Controls() koleksi kontrol pengguna. Saya hanya ingin mencoba menghindari melakukan hal seperti itu, karena membangun status tampilan secara manual untuk semua kontrol yang harus saya tambahkan bisa sangat merepotkan.


person tfrascaroli    schedule 30.11.2014    source sumber
comment
@marc_s terima kasih telah mengeditnya.   -  person tfrascaroli    schedule 01.12.2014


Jawaban (1)


Menemukannya!

Sumber: di sini (SO)

Kode terakhir saya (karena saya menggunakan vb.net):

ParentControl.ascx.vb:

Public Class ParentControl
    Inherits System.Web.UI.UserControl

    <PersistenceMode(PersistenceMode.InnerProperty)> _
    Public Property RightContent As PlaceHolder

    Private Sub Page_Init(sender As Object, e As System.EventArgs) Handles Me.Init
        phRightContent.Controls.Add(Me.RightContent)
    End Sub

End Class

ParentControl.ascx:

<asp:UpdatePanel ID="UpdatePanel" runat="server">
    <div id="LeftContent" class="LeftContent">
        PARENT STUFF HERE
    </div>
    <asp:PlaceHolder ID="phRightContent" runat="server">
    </asp:PlaceHolder>
</asp:UpdatePanel>

WebForm.ascx:

<pc:ParentControl ID="ParentControl" runat="server" >
    <RightContent>
        <cc:ChildControl ID="ChildControl" runat="server" />
    </RightContent>
</pc:ParentControl>
person tfrascaroli    schedule 01.12.2014