从另一个名称空间中的页面访问用户控件

本文关键字:访问 用户 控件 另一个 空间 | 更新日期: 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访问任何属性。
给定的Id实际上是代码后面中的用户控件的实例名

它不是像WebApplication3.asc_x.WebUserControl1.lbTest那样的静态属性

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

的例子:

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

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