如何访问当前[网页]页面(当前页面之外)?
问题描述:
这种情况是这样的:如何访问当前[网页]页面(当前页面之外)?
我有一个全局使用的抽象类,用于通过公共属性引用Session变量。我们现在想要改变它的行为以在母版页上返回一个属性。
(通过简单地改变这一特定属性的胆量,我们希望避免做大量重写)
这仅仅是一个类的片段:
public abstract class AppSession
{
public static CaseNumber CurrentCaseNo
{
/* OLD METHOD DELETED */
get
{
if (CurrentPage.Master != null)
// property on the master page
return CurrentPage.Master.CurrentCaseNo;
else
throw new Exception("This page has no master page");
}
}
}
以上,“当前页”不是真实/有效的。我只是写了那里来展示上下文。
这甚至可能吗?
谢谢! J
答
我认为你需要处理一些将“页面”对象作为参数的东西,并从那里,你可以确定传递的页面是否是你的母版页。并从那里做你需要的东西....
但是,这增加了相当多的开销。
这里真正的问题是你想避免什么?试图摆脱会议,并移动到查看状态?
+0
是的,替代方法是将页面作为参数传递。我们已经考虑过了,这是我们的最后选择。是的,我们试图摆脱会话变量。谢谢。 – Marc 2009-10-12 18:27:34
答
看看HttpContext.Current
对象。我相信这是Handler
属性将返回当前正在执行的页面。由于会话可用,因此可以更容易地读取会话中存储的值,以便将其从属性中提取出来,因为它的可用范围为HttpContext.Current
。
答
大厦David's answer,这可以静态地使用在整个应用程序:
Page myPage = System.Web.HttpContext.Current.CurrentHandler as Page;
if(myPage != null)
return ((MyMaster)myPage.Master).CurrentCaseNo;
这听起来像你不是在这里做什么是正确的,什么是你想从主网页检索? – 2009-10-12 18:53:24