我如何从母版页访问用户控件中的控件?
how can i access control in user control from master page?
我在用户控件中有一个标签,我想从母版页访问这个控件。
我不使用 <%@ Register TagPrefix="..." TagName="..." Src=".." %>
作为母版页头部的用户控件。
如何访问此控件?
非常感谢。
编辑:
我正在尝试创建一个购物网站。在我的站点中,我在 header 的左侧有一个小购物袋。我的购物袋中有几件商品,用户可以删除这些商品。我的购物袋位于母版页内。另一方面,我在用户帐户页面(例如:MainUserPage.aspx)中有一个用户控件(例如:ShoppingBagCtrl.ascx),它显示购物袋中的商品数量和附加项。当用户登录站点时,他被重定向到此页面。在此页面内,我使用 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>
主用户页面:
<%@ 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>
母版页 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.
}
尝试以下 -
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;
}
}
}
}
我在用户控件中有一个标签,我想从母版页访问这个控件。
我不使用 <%@ Register TagPrefix="..." TagName="..." Src=".." %>
作为母版页头部的用户控件。
如何访问此控件?
非常感谢。
编辑:
我正在尝试创建一个购物网站。在我的站点中,我在 header 的左侧有一个小购物袋。我的购物袋中有几件商品,用户可以删除这些商品。我的购物袋位于母版页内。另一方面,我在用户帐户页面(例如:MainUserPage.aspx)中有一个用户控件(例如:ShoppingBagCtrl.ascx),它显示购物袋中的商品数量和附加项。当用户登录站点时,他被重定向到此页面。在此页面内,我使用 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>
主用户页面:
<%@ 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>
母版页 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.
}
尝试以下 -
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;
}
}
}
}