0

网络专家,

我有一个 ASP.NET MVP(模型视图演示器)应用程序,我在其中使用 GenMaster.Master(母版页)、Metadata.aspx(起始页)、Global.asax 等。

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

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

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

现在,我应该在哪里声明这个 Session 属性以在 Master 以及所有内容页面中访问它?而且我不想直接分配/检索到/从 Session["EncryptedQuery"]

谢谢

4

2 回答 2

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...
}
于 2012-06-06T06:50:33.140 回答
0

MasterPage 被实现为页面的子控件。您应该能够Page.Session从 MasterPage 访问它。

我刚刚注意到您可能一直在问在哪里分配属性,而不是在哪里声明它。因此,如果您要问在哪里初始化 Session 数据的最佳实践是什么,那么答案将是课程的PostAcquireRequestState事件HttpApplication。您可以在 Global.asax 中声明它,或者使用自定义 HTTP 模块将其连接起来。

于 2012-06-06T06:33:03.400 回答