如何从主页面访问用户控件中的控件?

时间:2015-02-02 10:43:28

标签: asp.net user-controls master-pages

我在用户控件中有一个标签,我想从母版页访问此控件。

我不在主页的头部使用<%@ 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.
}

1 个答案:

答案 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;
                }
            }
        }

    }