ASP.NET / C#我应该在哪里使用Property声明Session?

时间:2012-06-06 06:27:36

标签: asp.net session

NET专家,

我有一个ASP.NET MVP(Model View Presenter)应用程序,我使用的是GenMaster.Master(母版页),Metadata.aspx(起始页),Global.asax等。

我正在访问GenMaster.Master(母版页)和Metadata.aspx(初始页)中的Session["EncryptedQuery"]

我们的会话声明约定是使用如下属性:

public string EncryptedQuery
{
   get
    {
       object SessionObject = Session["EncryptedQuery"];
       return (SessionObject == null) ? String.Empty : (string)SessionObject;
    }
   set
    {
        Session["EncryptedQuery"] = value;
    }
}

现在,我应该在哪里声明此Session属性以在Master和所有内容页面中访问它?而且我不想直接指派/回复Session["EncryptedQuery"]

由于

2 个答案:

答案 0 :(得分:0)

MasterPage实现为您网页的子控件。您应该可以使用MasterPage中的Page.Session访问它。

我刚注意到您可能一直在询问分配属性的位置,而不是声明的位置。所以,如果你问的是在哪里初始化Session数据的最佳实践,那么答案将是HttpApplication类的PostAcquireRequestState event。您可以在Global.asax中声明它,也可以使用自定义HTTP模块进行连接。

答案 1 :(得分:0)

此类策略运行良好,允许以强类型方式从站点中的任何位置访问会话数据。

public static class SessionData
{
    private const string ENCRPYTED_QUERY = "ENCRPYTED_QUERY";
    public static string EncrpytedQuery
    {
        get
        {
            if (HttpContext.Current.Session != null)
                return HttpContext.Current.Session[ENCRPYTED_QUERY] as string;

            return null;
        }
        set
        {
            HttpContext.Current.Session[ENCRPYTED_QUERY] = value;
        }
    }

    //add more down here...
}