|
分類:[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 を指定する
ことは出来ない(エラーが出たので出来ないと判断しましたが・・・)ようです。
宜しくお願いします。
|