我想將一個值傳遞給WebUserControl,然後再向第二個嵌套的WebUsercontrol傳遞值。第一個Control可以毫無問題地獲得該值,並且在調試模式下,它看起來好像確實將值傳遞給了嵌套控件,但在呈現頁面之前它會以某種方式丟失。如何通過嵌套的WebUserControls傳遞值?
在這個例子中,我試圖傳遞「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這將是巨大的:)
爲什麼不存儲在您的ViewState這個值是提供給所有控件當前請求不分尊卑的? – 2011-12-22 14:39:35