C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 37 を表示中)
■19389 / )  [ASP.NET2.0] マスターページネストに関して
□投稿者/ ま (39回)-(2008/05/22(Thu) 17:31:17)

分類:[ASP.NET (VB)] 

マスターページで質問です。
ASP.NET 2005 Express Edition
SqlServer2005 Express Edition


[TopMasterPage.Master]
<asp:Label ID="LabelMessage" runat="server" Text="" CssClass="cssMessage"></asp:Label>

[TopMasterPage.master.vb] 
public class TopMasterPage : Inherits Web.UI.MasterPage
   Implements IMessage

   private sub PageLoad(o as object, e as eventargs) handles me.load
      context.items.item("TOP") = me
   end sub

    public writeonly property Message() as string implements IMessage.Message
       set(s as string)
          LabelMessage = s
       end set
    end property

end class

[NestedMasterPage.master.vb]
public class NestedMasterPage : Inherits Web.UI.MasterPage
    public writeonly property Message() as string
       set(s as string)
          master.Message = s
       end set
    end property
     
end class

[ContentPage.aspx.vb]
public class ContentPage : Inherits Web.UI.Page

   private sub PageLoad(o as object, e as eventargs) handles me.load
      dim top as Object = context.items.item("TOP")
      if top is nothing then
          master.Message = "OK"
      else
          CType(top, IMessage).Message = "OKOK"
      end if
   end sub
end class

TopMasterPage->NestedMasterPage->ContentPage
という関係でマスターページがネストしていますが、ContentPage で TopMasterPage の
Message にアクセスしたいのですが、上記のように、NestedMasterPage のメソッドなり
プロパティ経由で間接参照するか、Context に TopMasterPage のインスタンスをセット
して インターフェースで参照する以外に無いでしょうか?

他にもっと簡単な方法ありましたら教えてください。

NestedMasterPage の ASPX 先頭にディレクティブ
<%@ MasterType VirtualPath="~/TopMasterPage.master" %>
を、
ContentPage の ASPX 先頭にディレクティブ
<%@ MasterType VirtualPath="~/NestedMasterPage.master" %>
を
追加しています。

MasterType は1ファイルに1つのみ宣言可能で、直属の親子関係にのみ適用可能に
なっているようです。NestedMasterPage に MasterType TopMasterPage を指定する
ことは出来ない(エラーが出たので出来ないと判断しましたが・・・)ようです。

宜しくお願いします。






返信 編集キー/


管理者用

- Child Tree -