Asp.net 从母版页获取值到类中

Asp.net 从母版页获取值到类中,asp.net,vb.net,master-pages,Asp.net,Vb.net,Master Pages,我有一个masterpagemyMaster,其中我有一个variablelets调用,它是我希望在外部类中访问的myInteger 通常我只是在我的aspx中这样做: 然后我可以在我的代码中访问它:Master.myInteger 我的问题是我想在另一个没有.aspx的类中访问它 我试过了 Master.MasterPageFile=~/myMaster.Master Master.AppRelativeVirtualPath=myMaster.Master 但是Master.myIntege

我有一个masterpagemyMaster,其中我有一个variablelets调用,它是我希望在外部类中访问的myInteger

通常我只是在我的aspx中这样做:

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

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

我试过了 Master.MasterPageFile=~/myMaster.Master Master.AppRelativeVirtualPath=myMaster.Master

但是Master.myInteger无法识别


我不确定我想做什么是可能的。。。想从外部类获取此变量吗?

请尝试以下方法:

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);
}

从外部类中,尝试以下操作:

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);
}

所以您需要从一个不从页面继承的类中引用母版页的属性

我建议使用属性或构造函数来用这个值初始化这个类。但如果您确实需要这样做,您可以尝试以下方法:


请注意,这很容易出错,并且会将您的类与母版页硬链接。

所以您需要从不从母版页继承的类中引用母版页的属性

我建议使用属性或构造函数来用这个值初始化这个类。但如果您确实需要这样做,您可以尝试以下方法:


请注意,这很容易出错,并且会将类与母版页硬链接。

在其他地方定义属性。您试图做的不是最佳实践。请在其他地方定义属性。你想做的不是最好的练习。谢谢,但我不确定英语不是我的母语。我应该写在哪里?那么virtualPath应该包含什么呢?在页面顶部的页面指令中,在页面声明下面:Thx但我不确定是否理解英语不是我的母语:p。我应该写在哪里?那么virtualPath应该包含什么呢?在页面声明下面最顶部的page指令中:Thanx,但我不确定如何使用属性来实现它。。。我是.Net的初学者。。。。你能说得更具体一点吗?@blob:很难说,因为你还没上过课。例如,从一个页面:Foo foo1=新Foo;foo1.myInteger=myMasterpage.Master.myInteger;假设您的类有一个属性myInteger.Thanx,但我不确定如何使用属性来实现它。。。我是.Net的初学者。。。。你能说得更具体一点吗?@blob:很难说,因为你还没上过课。例如,从一个页面:Foo foo1=新Foo;foo1.myInteger=myMasterpage.Master.myInteger;假设您的类有一个属性myInteger。