如何从aspx页面访问usercontrol id

本文关键字:访问 usercontrol id aspx | 更新日期: 2023-09-27 18:13:05

我有一个如下所示的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);
    }  
  }
}

和一个测试。使用了上述usercontrol的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。

换句话说,用户控制在母版页中实现,母版页由aspx页实现。现在我想在aspx页面中访问usercontrol id,就像上面的例子一样。请帮助!

如何从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)
  ...
}