从包含在母版页中的WebUserControl引用母版页

本文关键字:母版页 WebUserControl 引用 包含 | 更新日期: 2023-09-27 18:08:52

我从一个Web用户控件访问一个母版页公共对象,为此,我必须在WUC中引用母版页,因为我要在母版页中使用那个WUC,我也必须从母版页中引用WUC。. net告诉我这是一个循环引用,它是不允许的。

我的问题是:我可以从Web用户控件访问一个母版页对象,如果我在同一个母版页上使用它?

让我们一步一步来:

首先,我有一个MasterPage的命名空间,这个对象声明为:

namespace MyMPNamespace {
public partial class SiteMaster : System.Web.UI.MasterPage
{
    public MyNamespace.Navigator Navi {get; set;}
    public MyNamespace.user User { get; set; }
    protected void Page_Init(object sender, EventArgs e) {
        Navi = new MyNamespace.Navigator();
        User = new MyNamespace.user(true, true);
    }
...
} }
然后我可以从Web用户控件访问它,首先,引用主控页:
<%@ Register TagPrefix="mp" TagName="MyMP" Src="~/Site.master" %>

然后,使用我创建的命名空间访问它:

public MyNamespace.Navigator Navigator { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
    Navigator = ((MyMPNamespace.SiteMaster)this.Page.Master).Navi;
}

完成后,它可以在任何.aspx页面上工作。但是现在我想把WUC添加到MasterPage,我发现我不能,因为。net说有一个循环引用(这是真的,但不应该是一个问题)。

我知道这样做的其他方法,比如动态加载WUC(我没有尝试过),或者从母版页访问WUC并从那里设置WUC属性(这是有效的)。我想知道的是,如果有一种方法来做这个参考,因为我喜欢WUC能够访问母版页并100%独立的想法,它知道要显示什么等,而不必调用它。

从包含在母版页中的WebUserControl引用母版页

我能够创建一个Web用户控件,将其放在母版页上,然后访问母版页,没有循环引用问题。为了回答这个问题,我需要更多的信息:

    你使用的是什么版本的。net ?
  1. 您是在使用网站还是web应用程序?
  2. 用户控件是否在与母版页相同的源文件中创建?
  3. 如果没有,为什么你要注册用户控制使用网站。作为Src的主人?
  4. 有问题的用户控件被放置在网页上,并通过设计师控制?