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"]
。
由于
答案 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...
}