首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过嵌套的WebUserControls向下传递值?

如何通过嵌套的WebUserControls向下传递值?
EN

Stack Overflow用户
提问于 2011-12-22 22:30:05
回答 1查看 218关注 0票数 0

我尝试将一个值传递给一个WebUserControl,然后再传递给另一个嵌套的WebUsercontrol。第一个控件可以毫无问题地获取该值,并且在调试模式下,该值似乎也确实传递给了嵌套控件,但它在呈现页面之前不知何故丢失了。

在本例中,我尝试传递"headerTheme"-value。

嵌入顶层WebUserControl:

代码语言:javascript
复制
<uuc:FrameWork 
        runat="server" 
        ID="FrameWork" 
        EnableViewState="true"
        headerTheme="myValue"
         />

代码语言:javascript
复制
<asp:PlaceHolder ID="Header" runat="server">
<!-- Header control Start -->   

    <uuc:HeaderControl runat="server" ID="HeaderControl" EnableViewState="true"/>

<!--  Header control End -->
</asp:PlaceHolder>

代码语言:javascript
复制
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代码:

代码语言:javascript
复制
public string headerTheme { get; set; }
protected void Page_Load(object sender, EventArgs e)
        {            
            msg.Text = "Value: " + headerTheme;
        }

嵌套的WebUserControl ascx:

代码语言:javascript
复制
<asp:Label ID="msg" runat="server"></asp:Label>

此外,嵌套的用户控件位于占位符中,该占位符被放置在母版页上的第二个占位符中。由于在顶层WebUserControl中实际上有多个嵌套控件,这是为了将页眉、页脚、菜单等正确地放置在母版页上。

结果最终是一个空值,并且在开始时设置的值在此过程中会丢失。

如果有人有更好的方法将值传递给嵌套的WebUserControls,那也是很好的方法:)

EN

回答 1

Stack Overflow用户

发布于 2011-12-29 20:52:06

我找出了导致问题的原因。嵌套WebUserControl中的Page_Load事件激发了两次。将包含WebUserControl的占位符控件添加到母版页上的占位符时就会发生这种情况。

答案是添加这个值: HeaderControl.headerTheme = headerTheme;

添加占位符控件后:head.Controls.Add(表头);

(Header是一个包含HeaderControl的占位符)

/Magne

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8605287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档