WebUserControlに値を渡そうとしていて、次に2番目のネストされたWebUsercontrolに値を渡そうとしています。最初のコントロールは問題なく値を取得することができ、デバッグモードでは値が実際にネストされたコントロールにも渡されるようですが、ページをレンダリングする前に何らかの形で失われてしまいます。入れ子になった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>
また、ネストされたユーザーコントロールは、マスターページ上の第2のプレースホルダに入れますプレースホルダの内側です。実際には、トップレベルのWebUserControlには複数のネストされたコントロールが存在するため、ヘッダー、フッター、メニューなどをマスターページに正しく配置することです。
結果は最後にヌル値となり、最初に設定された値は途中で失われます。私はどこでどのように見つけることができない。
誰があまりにも素晴らしいだろう、ネストされたWebUserControls :)
なぜかかわらず、階層の現在の要求のすべてのコントロールに利用できる、あなたのViewStateにこの値を格納しませんか? –