我认为简短的回答是你不能,但必须有某种方式来实现它。我想制作一个项目列表,然后在其中有一个项目列表,只嵌套一个级别。IE:
Repeater
UserControl1
UserControl1
UserControl1
UserControl1
UserControl1
UserControl1
UserControl1
如果可能的话,我真的很想避免使用 LoadControl,因为我在服务器端 Click 事件中添加了这个列表,所以我不能在 PageInit 上执行 loadControl 来让所有视图状态的东西工作。
我将尝试编写一个快速的伪代码示例,它看起来像这样:
页面.aspx
<asp:repeater runat="Server" id="someRepeater">
<uc:UserControl1 runat="Server" id="ctrlParent" />
</asp:repeater>
用户控件1.ascx
<asp:label id="label1" runat="server" />
<asp:repeater runat="server" id="childRepeater">
<uc:UserControl1 runat="server" id="ctrlChild" />
</asp:repeater>
用户控件1.ascx.vb
If me.HasChildren then
'BindChildRepeater'
end if
sub Fill(Data as RelevantData)
label1.Text = Data.SomeText
end sub
sub ChildRepeater_ItemDataBound(object as sender, e as someArgs)
Dim childCtrl = e.item.findcontrol("ctrlChild")
childCtrl.Fill(e.item.dataitem)
end sub