代码之家  ›  专栏  ›  技术社区  ›  James Law

扩展自定义系统.Web.UI.Page实现程序,以包含可由页和母版页访问的自定义属性

  •  1
  • James Law  · 技术社区  · 14 年前

    我创建了一个名为BasePage的类,它继承系统.Web.UI第页。在这个页面上,我声明了一个名为UserSession的属性,我希望能够从任何页面/母版页访问它。

    public class BasePage : System.Web.UI.Page
    {
        string UserSession { get; set; }
    
        public BasePage()
        {
            base.PreInit += new EventHandler(BasePage_PreInit);
        }
    
        private void BasePage_PreInit(object sender, EventArgs e)
        {
            UserSession = "12345";
        }
    }
    

    public partial class Default : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write(UserSession);
        }
    }
    

    那么,我这么做是为了达到什么目的呢?我想向应用程序中的每个页面公开一个UserSession对象。很简单你会想?不。

    3 回复  |  直到 14 年前
        1
  •  2
  •   Jon Hanna    14 年前

    MasterPage 在继承权上是分开的 Page 所以你不能直接从那里访问这个属性。然而, 母板页 有一个 返回 对象,可以将其投射到 BasePage UserSession 是公共的(或内部的,或受保护的内部的,这在这里可能很有意义)它可以访问该属性。除非您只有一个母版页代码隐藏,否则您可能需要类似地创建BaseMasterPage并执行以下操作:

    public BaseMasterPage : MasterPage
    {
      protected string UserSession
      {
        get
        {
          return (Page as BasePage).UserSession;
        }
        set
        {
          (Page as BasePage).UserSession = value;
        }
      }
    }
    
        2
  •  0
  •   TheGeekYouNeed    14 年前

    这很简单。将字符串变量声明为public。

        3
  •  0
  •   matthughes404    14 年前

    编辑:他们的答案是正确的。。。我应该知道不要在星期一这么早回答问题。

    我认为您需要创建一个基本的母版页类来保存您的UserSession属性。这将允许您从母版页以及从母版页继承的页访问属性。