我的问题看似简单,但我无法找到解决方案。
我有一个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;
}
}
}
谁能告诉我这里缺少什么?
答案 0 :(得分:0)
使用usercontrol的 ID 访问任何媒体资源。
给定的ID实际上是代码隐藏中的 usercontrol的实例名称。
它不是像WebApplication3.asc_x.WebUserControl1.lbTest
那样访问的静态属性答案 1 :(得分:0)
我认为这是一个奇怪的召唤
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;
}
}
}
您需要先找到placeholer
第一个
然后找到user-control
到位的装置
然后找到链接按钮。
假设您的页面中有占位符p1
找到如下
PlaceHolder p=(PlaceHolder)Page.FindControl('p1');
然后在占位符p内找到用户控件,如下所示
假设您在占位符中拥有用户控件uc1
。
UserContro1 uc1=(UserControl1)p.FindControl("uc1");
然后你可以找到这个内部的链接
就这样
LinkButton lb = uc1.lbTest;
答案 2 :(得分:0)
您必须实例化(创建一个新的对象)用户控件。
示例:
LinkButton lb = (new WebApplication3.asc_x.WebUserControl1()).lbTest;
或类似的东西。 除非它已经是您页面上的控件;然后只需使用服务器ID。