cookie 可以包含字符串以外的数据
cookie can have data other than string
我有一个对象 class MeetingList
我想通过 cookie 传递这个对象,它在转换时给我错误
写 Cookie
HttpCookie cookies = new HttpCookie("QuickJumpCookie");
cookies["MeetingList"] = bal.GetMeetingList(personID, "Open").ToString();
Response.Cookies.Add(cookies);
阅读 Cookie
HttpCookie cookies = Request.Cookies["QuickJumpCookie"];
MeetingList ml = (MeetingList) cookies["MeetingList"]; <-- Error in this line
我想你应该序列化然后反序列化你的 MeetingList class
以某种格式(例如 JSON)在 cookie 中序列化您的对象,然后反序列化它。我个人使用这个 newtonsoft.com/json 库。你的代码看起来像
JsonConvert.SerializeObject(YourMeetingListObject)
然后是
MeetingList ml = (MeetingList) JsonConvert.DeserializeObject(cookies["MeetingList"])
您尝试做的是将字符串转换为 class 的实例。不幸的是你不能那样做。请关注link:Convert String to Type in C#
您可以使用 JavaScriptSerializer class. More information: Turn C# object into a JSON string in .NET 4
示例:
HttpCookie cookies = new HttpCookie("QuickJumpCookie");
var serializer = new JavaScriptSerializer();
var serializedResult = serializer.Serialize(bal.GetMeetingList(personID, "Open"));
cookies["MeetingList"] = serializedResult;
Response.Cookies.Add(cookies);
HttpCookie cookies = Request.Cookies["QuickJumpCookie"];
MeetingList ml = serializer.Deserialize<MeetingList>(cookies["MeetingList"]);
我有一个对象 class MeetingList 我想通过 cookie 传递这个对象,它在转换时给我错误
写 Cookie
HttpCookie cookies = new HttpCookie("QuickJumpCookie");
cookies["MeetingList"] = bal.GetMeetingList(personID, "Open").ToString();
Response.Cookies.Add(cookies);
阅读 Cookie
HttpCookie cookies = Request.Cookies["QuickJumpCookie"];
MeetingList ml = (MeetingList) cookies["MeetingList"]; <-- Error in this line
我想你应该序列化然后反序列化你的 MeetingList class
以某种格式(例如 JSON)在 cookie 中序列化您的对象,然后反序列化它。我个人使用这个 newtonsoft.com/json 库。你的代码看起来像
JsonConvert.SerializeObject(YourMeetingListObject)
然后是
MeetingList ml = (MeetingList) JsonConvert.DeserializeObject(cookies["MeetingList"])
您尝试做的是将字符串转换为 class 的实例。不幸的是你不能那样做。请关注link:Convert String to Type in C#
您可以使用 JavaScriptSerializer class. More information: Turn C# object into a JSON string in .NET 4
示例:
HttpCookie cookies = new HttpCookie("QuickJumpCookie");
var serializer = new JavaScriptSerializer();
var serializedResult = serializer.Serialize(bal.GetMeetingList(personID, "Open"));
cookies["MeetingList"] = serializedResult;
Response.Cookies.Add(cookies);
HttpCookie cookies = Request.Cookies["QuickJumpCookie"];
MeetingList ml = serializer.Deserialize<MeetingList>(cookies["MeetingList"]);