C# 如何从aspx页面访问用户控件id?

C# 如何从aspx页面访问用户控件id?,c#,asp.net,user-controls,C#,Asp.net,User Controls,我有一个usercontrol,如下所示 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 sen

我有一个usercontrol,如下所示

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,它使用了上述的usercontrol

<body>
 <form id="form1" runat="server">
 <uc1:lcont ID="lcont1" runat="server" />
 <div>
 <asp:Label ID ='lbl' runat="server" Text ="lbl"  />
 </div>
 </form>
</body>
正如您在这里看到的,我可以调用“lcont1”,它是aspx文件的代码隐藏中用户控件的id

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


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

我会这样做的

在母版页中创建公开用户控件的公共函数/属性

public lcont GetLcont1()
{
   return lcont1;
}
然后在
.aspx
中,您可以播放
母版页

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)
  ...
}

函数GetLcont1()是否返回usercontrol的实际id?因为我需要访问usercontrol的实际id。如果您阅读代码,您将看到它是返回的控件的实例。。。我真的不需要告诉你。如果需要客户端ID,则执行
lcont1.ClientID
而不是
lcont1.doSomething()我需要做的就像问题中给出的代码的代码隐藏。问题中的最后一块代码。这样更好吗。。。或者你想让我为你写整个项目吗?我做了同样的事情
hfm mymaster=(hfm)Page.Master;lcont lcont1=mymaster.getlcont();lcont1.myevent+=委托(字符串st){slbl.Text=st;}但它不起作用..标签应该是变化的,但它保持不变。所以我问你。
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)
  ...
}