在主页面中声明会话字典

时间:2011-01-29 20:01:45

标签: c# asp.net session-variables

如何在母版页中声明一个名为MyDic的字典?

我希望MyDic能够保存以日期为关键字的MyObj对象列表,以便我可以这样编写:“从MyDic获取日期列表1/28/2011”或“将MyObj列表从1放入/ 28/2011 in MyDic“。

我想在母版页中声明字典,以便我可以在每个页面中访问它。

感谢。

3 个答案:

答案 0 :(得分:2)

你是如何计划坚持名单的? 您可以将其创建为应用程序变量,或者将其作为特定于用户的会话变量创建,而不是在母版页中创建它。在任何一种情况下,你都会这样做:

Dictionary<DateTime, myObj> myList = new Dictionary<DateTime, myObj>();

然后你会把它存放在某个地方:

Session["MyList"] = myList;

当您需要再次访问时:

Dictionary<DateTime, myObj> myList = (Dictionary<DateTime, myObj>)Session["MyList"];

您可以在初始化或加载时在母版页中执行声明,或者甚至更好我建议在global.asax文件中为会话或应用程序执行此操作

答案 1 :(得分:2)

您可以在母版页上创建公共属性,然后通过设置 MasterType 指令在内容页面中使用它。例如如果你有一个名为MyMasterPage的母版页,那么这里是代码示例

/// declare it in Master Page
public Dictionary<DateTime, typeof(List<MyObj_Type>)> MyDic {
      get;
      set;
}

/// put the line just under Page directive on your content page where you want to access it

<%@ MasterType  virtualPath="~/MyMasterPage.master"%>

/// and then on content page you can access by
** Note: The intelisense may not work but don't worry just put the code in content page and it works.**

Master.MyDic.Add(DateTime.Now, MyObj);

以下是Accessing Members on the Master Page

的详细信息

祝你有个美好的一天!

答案 2 :(得分:0)

您可以使用sessionapplication变量进行此类共享。

这种情况几乎就是为它们创造的。