我在用户控件中有一个标签,我想从母版页访问此控件。
我不在主页的头部使用<%@ Register TagPrefix="..." TagName="..." Src=".." %>
进行用户控制。
如何访问此控件?
非常感谢。
编辑:
我正在尝试创建一个购物网站。在我的网站上,我在标题的左侧有一个小购物袋。我的购物袋中有一些商品,用户可以删除这些商品。我的购物袋位于母版页内。另一方面,我在用户帐户页面中有一个用户控件(例如:ShoppingBagCtrl.ascx)(例如:MainUserPage.aspx),显示购物袋和附加项目中的项目数。当用户在站点中登录时,他被重定向到此页面。在这个页面中,我使用ShoppingBagCtrl.ascx。
我的问题是:
如何从母版页访问用户控件(ShoppingBagCtrl.ascx)中的标签。我的用户控件在MainUserPage.aspx页面内,MainUserPage.aspx在母版页内。换句话说,当用户删除位于母版页内的购物袋中的商品时,位于MainUserPage.aspx中的用户控件内的标签也会发生变化。
注意:
1-标签显示购物袋中的商品数量。
2-通过购物袋内的按钮取消火。
3-母版页内的购物袋。
4-用户控件内的标签。
5-母版页内的MainUserPage和MainUserPage内的用户控件。
我希望我已经清楚地解释过了。非常感谢。
母版页:
<div class="HeaderDiv">
<div class="container">
<div class="buy-bag">
<div class="left bag-inner">
<ul class="right sky-mega-menu sky-mega-menu-anim-scale">
<li class="dropdown right" aria-haspopup="true">
<a href="#" class="dropdown-toggle"><span>your shopping bag : </span>
<asp:Label ID="ItemLBL" runat="server" CssClass="orange"></asp:Label>
<span> - </span><asp:Label ID="PriceLBL" runat="server"></asp:Label>
<b class="caret"></b>
</a>
<div class="grid-container6">
<div class="dropdown-inner form">
//my shopping bag
<asp:LinkButton ID="RemoveBTN" runat="server" text="Remove" OnClick="RemoveBTN_Click">
</asp:LinkButton>
</div>
</div>
</li>
</ul>
</div>
<div class="clear"></div>
</div>
</div>
</div>
<div class="CenterDiv">
<asp:ContentPlaceHolder id="MainContent" runat="server">
</asp:ContentPlaceHolder>
</div>
MainUserPage:
<%@ Register TagPrefix="UserCtrl" TagName="ShopingBagCtrl" Src="UserControls/ShopingBagCtrl.ascx" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" Runat="Server">
<div class="main container">
<div class="col-right">
<UserCtrl:ShopingBagCtrl runat="server" id="UcShopingBagCtrl"/>
</div>
</div>
</asp:Content>
用户控制:
<div class="block block-account">
<div class="block-content">
<div class="summary" dir="rtl">
<asp:Label ID="ItemLBL" runat="server"></asp:Label>
</div>
</div>
</div>
Master Page cs:
protected void RemoveBTN_Click(object sender, EventArgs e)
{
//I want when click on RemoveBTN on Master Page, I have access to ItemLBL on User Control.
}
答案 0 :(得分:0)
尝试以下操作 -
UserControl uch = Page.Master.FindControl("userControlId") as UserControl;
Label lbl1= uch.FindControl("labelid") as Label;
编辑 -
下面的代码适用于我。
protected void RemoveBTN_Click(object sender, EventArgs e)
{
ContentPlaceHolder cp = this.FindControl("MainContent") as ContentPlaceHolder;
if (cp != null)
{
var userCtrl = (UserControl)cp.FindControl("UcShopingBagCtrl");
if (userCtrl != null)
{
var lbl = userCtrl.FindControl("ItemLBL") as Label;
if (lbl != null)
{
string txt = lbl.Text;
}
}
}
}