繁体   English   中英

如何从aspx页面访问用户控件ID?

[英]How to access usercontrol id from the aspx page?

我有一个用户控件,如下所示。

public partial class lcont : System.Web.UI.UserControl
{
  public delegate void mydel(string str);

  protected void Page_Load(object sender, EventArgs e)
  {
  }
  public event mydel myevent;

  public void butt_click(object sender, EventArgs e)
  {

    if (myevent != null)
    {
        myevent(tv.SelectedNode.Value);
    }  
  }
}

还有一个使用上面用户控件的test.aspx。

<body>
 <form id="form1" runat="server">
 <uc1:lcont ID="lcont1" runat="server" />
 <div>
 <asp:Label ID ='lbl' runat="server" Text ="lbl"  />
 </div>
 </form>
</body>

其背后的代码是:

protected void Page_Load(object sender, EventArgs e)
{

   lcont1.myevent += delegate(string st)
    {
        lbl.Text = st;
    };

}

如您在这里看到的,我能够调用“ lcont1”,这是aspx文件背后代码中usercontrol的ID。

现在的问题是:我想做同样的事情,但是这次使用的aspx文件没有直接实现usercontrol,但是继承了实现了usercontrol的母版页。

换句话说,usercontrol是在母版页中实现的,而母版页是由aspx页实现的。现在我想像上面的示例一样在aspx页中访问usercontrol id。

我要做的就是这样

在您的MasterPage中创建一个公开功能/属性,以公开UserControl

public lcont GetLcont1()
{
   return lcont1;
}

然后,在您的.aspx您可以投射MasterPage

MyMasterPage myMaster = (MyMasterPage)Page.Master;

现在,您应该可以获取UserControl并使用它进行所需的操作

lcont lcont1 = myMaster.GetLcont1();
lcont1.doSomething();

更新

由于OP需要用勺子喂食,因此这是.aspx页的代码隐藏...

protected void Page_Load(object sender, EventArgs e)
{
  // Note: replace "MyMasterPage" with the name of your master page class
  MyMasterPage myMaster = (MyMasterPage)Page.Master;
  lcont lcont1 = myMaster.GetLcont1();
  lcont1.myevent += delegate(string st)
  ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM