【问题标题】:how can i access control in user control from master page?如何从母版页访问用户控制中的控制?
【发布时间】:2015-02-02 10:43:27
【问题描述】:

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

我不使用<%@ Register TagPrefix="..." TagName="..." Src=".." %> 进行母版页头部的用户控制。

如何访问此控件?

非常感谢。

编辑:

我正在尝试创建一个购物网站。在我的网站中,标题左侧有一个小购物袋。我的购物袋中有一些物品,用户可以删除这些物品。我的购物袋位于母版页内。另一方面,我在用户帐户页面(例如: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.
}

【问题讨论】:

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


    【解决方案1】:

    尝试关注 -

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

    【讨论】:

    • “userControlId”是什么意思?用户控件没有ID?请帮助我。
    • 你能分享你如何放置用户控件的代码吗?
    • 好的。但是您可以在母版页中显示您的声明代码吗?这将有助于向您展示代码示例。
    • 感谢您的出色解决方案。
    • 如果答案满足您的要求,请将其标记为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 2011-03-17
    相关资源
    最近更新 更多