ห่อการควบคุมผู้ใช้ภายในแท็กของการควบคุมผู้ใช้อื่นในไฟล์ ASCX

ฉันค้นหาเรื่องนี้มาหลายชั่วโมงแล้ว แต่ฉันอาจสร้างข้อความค้นหาใน Google ได้ไม่ดีหรือมีข้อมูลไม่มากเกี่ยวกับเรื่องนี้

ฉันกำลังพยายามสร้างการควบคุมผู้ใช้ที่สามารถ "รวม" การควบคุมผู้ใช้อื่นไว้ข้างในได้ เช่นเดียวกับที่ <asp:Panel> ทำทุกประการ คิดว่ามันเป็นแผงที่น่ายกย่อง (จริงๆ แล้วนั่นคือสิ่งที่เป็นอยู่)

ตามหลักการแล้ว ฉันต้องการสร้างสิ่งนี้:

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

สิ่งที่ฉันพยายามสร้างคือการควบคุมผู้ใช้ parentControl และทำให้มัน "อ่าน" สิ่งใดก็ตามที่อยู่ข้างในและแสดง / จัดรูปแบบด้วยวิธีใดวิธีหนึ่ง (จริงๆ แล้วเพียงวางไว้ในพาเนลอันใดอันหนึ่ง)

บางทีนี่อาจไม่ใช่วิธีที่ถูกต้อง ดังนั้นโปรดชี้ทางที่ถูกต้องให้ฉันด้วย

ขอบคุณ!

แก้ไข:

หลังจากการเรนเดอร์ นี่จะเป็น html ที่เรนเดอร์ในอุดมคติ:

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

PS: ฉันรู้เกี่ยวกับการควบคุมที่เพิ่มแบบไดนามิกในคอลเลกชัน Controls() ของการควบคุมผู้ใช้ ฉันแค่อยากจะพยายามหลีกเลี่ยงการทำเช่นนั้น เนื่องจากการสร้างสถานะมุมมองด้วยตนเองสำหรับการควบคุมทั้งหมดที่ฉันต้องเพิ่มอาจเป็นเรื่องยุ่งยากอย่างยิ่งใน ***


person tfrascaroli    schedule 30.11.2014    source แหล่งที่มา
comment
@marc_s ขอบคุณสำหรับการแก้ไข   -  person tfrascaroli    schedule 01.12.2014


คำตอบ (1)


พบมัน!

ที่มา: ที่นี่ (SO)

รหัสสุดท้ายของฉัน (เนื่องจากฉันใช้ 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