2011-09-16 23 views
0

我正在訪問來自Web用戶控件的MasterPage公共對象,爲此,我必須引用WUC中的母版頁,並且由於我要在MasterPage中使用該WUC以及我必須從MasterPage中引用WUC。 .Net告訴我,這是一個循環引用,它是不允許的。從該網頁中包含的WebUserControl引用MasterPage

我的問題是:如果我在同一個MasterPage上使用它,我可以從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(從未嘗試過),或者從MasterPage訪問WUC並從那裏設置WUC屬性。我想知道的是,如果有一種方法可以參考,因爲我喜歡WUC能夠訪問MasterPage並且100%獨立的想法,它知道要顯示什麼等,而不必稱之爲在所有。

回答

0

我能夠創建一個Web用戶控件,將它放在母版頁上,然後訪問沒有循環引用問題的母版頁。爲了回答,我需要更多信息:

  1. 您使用的是什麼版本的.NET?
  2. 您使用的是網站還是Web應用程序?
  3. 用戶控件是否在與母版頁相同的源文件中創建?
  4. 如果沒有,爲什麼要使用Site.master作爲Src註冊用戶控件?
  5. 正在討論的用戶控件正在通過設計器放置在網頁和主人面前?
+0

馬克,感謝您的時間。 1:.Net版本是4 | 2:Im使用Web應用程序。 | 3:用戶控件擁有自己的文件。 |我通常使用設計器來添加WUC,但是我手動添加了masterPage參考。 –

相關問題