C# 如何从aspx页面访问用户控件id?
我有一个usercontrol,如下所示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
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)
...
}