0

我的问题似乎很简单,但我找不到解决方案。

我有一个 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;
        }
    }
}

谁能告诉我这里缺少什么?

4

3 回答 3

0

您必须实例化(创建一个新对象)用户控件)。

例子:

LinkButton lb = (new WebApplication3.asc_x.WebUserControl1()).lbTest;

或类似的东西。除非它已经是您页面上的控件;然后只需使用服务器 ID。

于 2013-04-11T11:13:34.247 回答
0

使用用户控件的ID访问任何属性。
给定的 Id 实际上是codebehind用户控件的实例名称

它不是像 WebApplication3.asc_x.WebUserControl1.lbTest 这样访问的静态属性

于 2013-04-11T11:06:56.943 回答
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;
      }
   }
}

编辑 1

您需要先找到第placeholer一个
然后找到user-control就地hoder
然后找到链接按钮。

p1假设你的页面中有一个占位符
查找如下

PlaceHolder p=(PlaceHolder)Page.FindControl('p1');   

然后在占位符 p 中找到用户控件,如下
所示假设您uc1在占位符中有用户控件。

UserContro1 uc1=(UserControl1)p.FindControl("uc1");

然后你可以找到这个里面的链接
As this

LinkButton lb = uc1.lbTest;
于 2013-04-11T11:09:19.233 回答