我尝试将一个值传递给一个WebUserControl,然后再传递给另一个嵌套的WebUsercontrol。第一个控件可以毫无问题地获取该值,并且在调试模式下,该值似乎也确实传递给了嵌套控件,但它在呈现页面之前不知何故丢失了。
在本例中,我尝试传递"headerTheme"-value。
嵌入顶层WebUserControl:
<uuc:FrameWork
runat="server"
ID="FrameWork"
EnableViewState="true"
headerTheme="myValue"
/><asp:PlaceHolder ID="Header" runat="server">
<!-- Header control Start -->
<uuc:HeaderControl runat="server" ID="HeaderControl" EnableViewState="true"/>
<!-- Header control End -->
</asp:PlaceHolder>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,那也是很好的方法:)
发布于 2011-12-29 20:52:06
我找出了导致问题的原因。嵌套WebUserControl中的Page_Load事件激发了两次。将包含WebUserControl的占位符控件添加到母版页上的占位符时就会发生这种情况。
答案是添加这个值: HeaderControl.headerTheme = headerTheme;
添加占位符控件后:head.Controls.Add(表头);
(Header是一个包含HeaderControl的占位符)
/Magne
https://stackoverflow.com/questions/8605287
复制相似问题