我正在尝试将值传递给WebUserControl,然后再传递给第二个嵌套的WebUsercontrol。第一个Control可以毫无问题地获得值,并且在调试模式下,似乎值确实传递给嵌套控件,但在呈现页面之前它会以某种方式丢失。
在示例中,我试图传递“headerTheme” - 值。
嵌入顶级WebUserControl:
<uuc:FrameWork
runat="server"
ID="FrameWork"
EnableViewState="true"
headerTheme="myValue"
/>
top-level-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>
嵌套的usercontrol也位于占位符中,占位符位于母版页的第二个占位符中。由于顶级WebUserControl中实际存在多个嵌套控件,因此可以在页眉上正确放置页眉,页脚,菜单等。
结果是最后的空值,并且开头设置的值在此过程中的某处丢失。我似乎无法找到在哪里或如何。
如果有人有更好的方法将值传递给嵌套的WebUserControls那也很棒:)
答案 0 :(得分:0)
我弄清楚是什么导致了这个问题。嵌套WebUserControl中的Page_Load事件被触发两次。将包含WebUserControl的占位符控件添加到母版页上的占位符时,会出现这种情况。
答案是添加值:HeaderControl.headerTheme = headerTheme;
添加占位符控件后:head.Controls.Add(Header);
(标题是包含HeaderControl的占位符)
/马格纳