我正在尝试将值传递给 WebUserControl,然后再传递给第二个嵌套的 WebUsercontrol。第一个控件可以毫无问题地获取该值,并且在调试模式下,该值似乎确实也传递给了嵌套控件,但它在呈现页面之前不知何故丢失了。
在示例中,我试图传递“headerTheme”值。
嵌入顶级WebUserControl:
<uuc:FrameWork
runat="server"
ID="FrameWork"
EnableViewState="true"
headerTheme="myValue"
/>
顶级WebUserControl ascx:
<asp:PlaceHolder ID="Header" runat="server">
<!-- Header control Start -->
<uuc:HeaderControl runat="server" ID="HeaderControl" EnableViewState="true"/>
<!-- Header control End -->
</asp:PlaceHolder>
顶级 WebUserControl 代码隐藏:
public string headerTheme { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
PlaceHolder head = (PlaceHolder)Page.Master.FindControl("HeaderPlaceHolder");
HeaderControl.headerTheme = headerTheme;
head.Controls.Add(Header);
}
嵌套的 WebUserControl 代码隐藏:
public string headerTheme { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
msg.Text = "Value: " + headerTheme;
}
嵌套的 WebUserControl ascx:
<asp:Label ID="msg" runat="server"></asp:Label>
此外,嵌套的用户控件位于占位符内,该占位符被放置在母版页上的第二个占位符中。由于在顶层WebUserControl中实际上有多个嵌套控件,这是为了在母版页上正确放置页眉、页脚、菜单等。
结果最终是一个空值,并且在开始时设置的值会在途中丢失。我似乎无法找出在哪里或如何。
如果有人有更好的方法将值传递给嵌套的 WebUserControls,那也很棒:)