如何从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,就像上面的例子一样。请帮助!
我会这样做…
在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)
...
}