1

我有一个母版页(myMaster),其中有一个变量(让调用是 myInteger),我想在外部类中访问。

通常我只是在我的 aspx 中这样做: <%@ MasterType VirtualPath="myMaster.master" %>

然后我可以在我的代码中访问它:Master.myInteger ...

我的问题是我想在另一个类中访问它(没有.aspx)

我试着做 Master.MasterPageFile = "~/myMaster.master" Master.AppRelativeVirtualPath = "myMaster.master"

但随后 Master.myInteger 无法识别。

我不确定我想做什么是可能的......有什么想法得到这个变量吗?

4

2 回答 2

4

所以你需要MasterPage从一个不继承自的类中引用 a 的属性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 回答