我有一个C#应用程序,我需要列表“记住”之前输入的内容。
http://oi40.tinypic.com/2ivhcuw.jpg
因此,一旦添加了与会者,如果添加了新的与会者,则之前的与会者将留在列表中。目前它只显示最近的与会者,我希望他们保存,直到我决定清除它们(可能在会话中?)
List<Information> infoList = new List<Information>();
Information data = new Information();
firstName = resultEntry.Properties["givenname"].Value.ToString();
lastName = resultEntry.Properties["sn"].Value.ToString();
fullName = firstName + " " + lastName;
//data.CWID = resultEntry.Properties["username"].Value.ToString();
data.FullName = fullName;
// data.Email = resultEntry.Properties["email"].Value.ToString();
infoList.Add(data);
答案 0 :(得分:2)
取决于“保存”持续时间的长度:
使用ViewState
- 如果您希望列表在页面加载时为空(而不是回发)。 (即ViewState["data"] = infoList
)
使用Session
- 如果您想根据某些条件手动清空列表。
答案 1 :(得分:2)
用于将项目存储到会话中:
Session["MyInformation"] = data;
从会话中接收数据
List<information> data = (List<information>)Session["MyInformation"];
但要注意:会话应该被遗忘。
有人可能会考虑使用viewstate但请注意:viewstates会使页面变慢。 (在添加viewstate时,简单测试html页面的大小)
最后一个选项可能是包含Cookie以便更长时间保留这些项目。
写一个cookie:http://msdn.microsoft.com/en-us/library/78c837bd(v=vs.100).aspx
阅读Cookie:http://msdn.microsoft.com/en-us/library/bd70eh18(v=vs.100).aspx
另一种选择是将数据保存在database =&gt;中然而,这意味着更多的流量。
(也是对会话的一个小提示,将它们放在一个单独的静态类中,这样你就可以让它们通过整个项目而不是一个页面
public static class MySessions
{
public static List<Information> MyData
{
get{
//EDIT in the GET
if(HttpContext.Current.Session["MyInformation"] != null)
return (List<information>)HttpContext.Current.Session["MyInformation"];
else
{
HttpContext.Current.Session["MyInformation"] = new List<Information>();
return new List<Information>();
}
}
set{HttpContext.Current.Session["MyInformation"] = value;}
}
}
编辑:
使用如下的类:(它是一个静态类,通过输入类名后跟属性,你可以调用它而不是首先实例化类。
//Set the value from Somewhere
MySessions.MyData = new List<Information>();
//get the values from somewhere
var myInfo = MySessions.MyData;