繁体   English   中英

从该MasterPage中包含的WebUserControl引用MasterPage

[英]Referencing MasterPage from WebUserControl included in that MasterPage

我要从Web用户控件访问MasterPage公共对象,为此,我必须在WUC中引用该MasterPage,并且由于我还要在MasterPage中使用该WUC,所以我也必须从MasterPage中引用WUC 。 .Net告诉我,这是一个循环引用,不允许使用。

我的问题是: 如果我也在同一MasterPage上使用它,是否可以从Web用户控件访问MasterPage对象?

让我们一步一步来:

首先,我为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用户控件访问它,首先,请参考MasterPage:

<%@ 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(我没有尝试过),或者从MasterPage访问WUC并从那里设置WUC属性(此方法有效)。 我想知道的是, 是否有一种方法可以进行引用,因为我喜欢WUC能够访问MasterPage并100%独立的想法,它知道要显示的内容等等,根本不必调用它。

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

  1. 您正在使用什么版本的.NET?
  2. 您正在使用网站还是Web应用程序?
  3. 用户控件是否在与母版页相同的源文件中创建?
  4. 如果没有,为什么要使用Site.master作为Src注册用户控件?
  5. 正在通过设计器将有问题的用户控件放置在网页上并由其控制吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM