2011-09-16 10 views
0

Web User ControlからMasterPage公開オブジェクトにアクセスしています。そのために、WUCでMasterPageを参照する必要があります。また、MasterPageでそのWUCを使用する予定です私はMasterPageからWUCを参照する必要があります。 .Netはこれが循環参照であり、許可されていないことを伝えます。そのMasterPageに含まれるWebUserControlからMasterPageを参照する

私の質問は:同じMasterPageでも使用しているのであれば、Web User Controlから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. ウェブサイトまたはウェブアプリケーションを使用していますか?
  3. ユーザーコントロールはマスターページと同じソースファイルに作成されていますか?
  4. そうでない場合は、なぜSrcとしてSite.masterを使用してユーザーコントロールを登録しますか?
  5. 問題のユーザーコントロールは、デザイナー経由でウェブページとマスターに配置されていますか?
+0

ハローマーク、お時間をいただきありがとうございます。 1:.Netバージョンは4です。 2:Webアプリケーションを使用しています。 | 3:ユーザーコントロールには独自のファイルがあります。 | 5:私は通常デザイナーを使ってWUCを追加しますが、masterPageリファレンスを手動で追加します。 –

関連する問題