从另一个名称空间中的页面访问用户控件
本文关键字:访问 用户 控件 另一个 空间 | 更新日期: 2023-09-27 18:08:32
我的问题似乎很简单,但是我找不到解决方法。
我有一个aspx如下:
namespace WebApplication3.asp_x
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
和ascx,如下所示:
namespace WebApplication3.asc_x
{
public partial class WebUserControl1 : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
public LinkButton lbTest
{
get {
return this.lbTest;
}
}
}
}
从aspx文件中,我想访问公共属性lbTest,我做以下操作,但它不工作(它不编译)
namespace WebApplication3.asp_x
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
LinkButton lb = WebApplication3.asc_x.WebUserControl1.lbTest;
}
}
}
谁能告诉我这里缺少什么?
我觉得这是一个奇怪的呼唤
LinkButton lb = WebApplication3.asc_x.WebUserControl1.lbTest;
因为你需要一个实例来调用它的标签。
就像如果你在页面上有一个usercontrol
的实例,那么你可以调用它的公共属性。
namespace WebApplication3.asp_x
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
WebApplication3.asc_x.WebUserControl1 ob=new WebApplication3.asc_x.WebUserControl1();
LinkButton lb = ob.lbTest;
}
}
}
编辑1
你需要先找到placeholer
然后找到user-control
在原位支架
然后找到链接按钮。
假设您的页面中有一个占位符p1
查找方法如下
PlaceHolder p=(PlaceHolder)Page.FindControl('p1');
然后在位置符p中找到用户控件,如下所示
假设在占位符中有用户控件uc1
。
UserContro1 uc1=(UserControl1)p.FindControl("uc1");
然后你可以在
里面找到链接因为这
LinkButton lb = uc1.lbTest;
使用usercontrol的ID访问任何属性。 它不是像WebApplication3.asc_x.WebUserControl1.lbTest那样的静态属性
给定的Id实际上是代码后面中的用户控件的实例名。
您必须实例化(创建一个新的对象)用户控件。
的例子:
LinkButton lb = (new WebApplication3.asc_x.WebUserControl1()).lbTest;
或者类似的东西。除非它已经是页面上的控件;然后直接使用服务器ID。