1

外部クラスでアクセスしたい変数(呼び出しはmyIntegerです)があるマスターページ(myMaster)があります。

通常、私は aspx でそれを行います: <%@ MasterType VirtualPath="myMaster.master" %>

そして、コード ビハインドでアクセスできます: Master.myInteger ...

ここでの問題は、別のクラス (.aspx がない場所) でアクセスしたいことです。

Master.MasterPageFile = "~/myMaster.master" Master.AppRelativeVirtualPath = "myMaster.master" をやってみました

しかし、Master.myInteger は認識されません。

やりたいことが可能かどうかわかりません...この変数を取得するアイデアはありますか?

4

2 に答える 2

4

MasterPageから継承していないクラスから のプロパティを参照する必要がありますPageか?

プロパティまたはコンストラクターを使用して、このクラスをこの値で初期化することをお勧めします。しかし、このように本当に必要な場合は、以下を使用するアプローチを試すことができますHttpContect.Current.Handler:

// works even in static context
static void foo()
{
    int myInteger = -1;
    var page = System.Web.HttpContext.Current.Handler as System.Web.UI.Page;
    if(page != null) myInteger = ((myMaster)page.Master).myInteger;
}

これはエラーが発生しやすく、クラスをMasterPage.

于 2012-04-23T14:55:05.580 に答える
0

外部クラスから、次のようなことを試してください。

var page = HttpContext.Current.Handler as Page;
if (page != null)
{
    var value = ((MasterPageName)page.Master).SomeProperty;
}

外部クラスからマスター ページにアクセスできない場合は、リフレクションを使用してプロパティまたはメソッドにアクセスできます。

var page = HttpContext.Current.Handler as Page;
if (page != null)
{
    var value = page.Master.GetType().GetProperty("SomeProperty").GetValue(page.Master, null);
}
于 2012-04-23T14:52:18.077 に答える