【问题标题】:declaring a session dictionary in a master page在母版页中声明会话字典
【发布时间】:2011-01-30 05:12:41
【问题描述】:

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

我希望 MyDic 以日期为键保存 MyObj 对象列表,以便我可以编写如下内容:“从 MyDic 获取日期 1/28/2011 的列表”或“将此 MyObj 列表从 1 /28/2011 在 MyDic 中”。

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

谢谢。

【问题讨论】:

    标签: c# asp.net session-variables


    【解决方案1】:

    您打算如何保留该列表? 您可以将其创建为应用程序变量,或者如果它是用户特定的会话变量,而不是在母版页中创建它。在任何一种情况下,您都会执行以下操作:

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

    然后你将它存储在某个地方:

    Session["MyList"] = myList;
    

    当您需要再次访问它时:

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

    您可以在初始化或加载时在母版页中进行声明,或者更好的是我建议在会话或应用程序的 global.asax 文件中进行声明

    【讨论】:

    • 几小时前我不是在这里回答了你同样的问题吗..stackoverflow.com/questions/4838129/…
    • 这也有效吗? Dictionary > SessionFolders = new Dictionary >();这会创建一个列表字典吗?
    • get 不需要做 .GetType()
    【解决方案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的详细信息

    祝你有个美好的一天!!!

    【讨论】:

      【解决方案3】:

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

      这种场景几乎就是他们创建的目的。

      【讨论】:

      • 这也有效吗? Dictionary > SessionFolders = new Dictionary >();这会创建一个列表字典吗?
      猜你喜欢
      • 2014-05-02
      • 1970-01-01
      • 2021-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多