Asp.net 从母版页获取值到类中
我有一个masterpagemyMaster,其中我有一个variablelets调用,它是我希望在外部类中访问的myInteger 通常我只是在我的aspx中这样做: 然后我可以在我的代码中访问它:Master.myInteger 我的问题是我想在另一个没有.aspx的类中访问它 我试过了 Master.MasterPageFile=~/myMaster.Master Master.AppRelativeVirtualPath=myMaster.Master 但是Master.myInteger无法识别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
我不确定我想做什么是可能的。。。想从外部类获取此变量吗?请尝试以下方法:
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。