如何访问当前[网页]页面(当前页面之外)?

问题描述:

这种情况是这样的:如何访问当前[网页]页面(当前页面之外)?

我有一个全局使用的抽象类,用于通过公共属性引用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

这听起来像你不是在这里做什么是正确的,什么是你想从主网页检索? – 2009-10-12 18:53:24

我认为你需要处理一些将“页面”对象作为参数的东西,并从那里,你可以确定传递的页面是否是你的母版页。并从那里做你需要的东西....

但是,这增加了相当多的开销。

这里真正的问题是你想避免什么?试图摆脱会议,并移动到查看状态?

+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;