session看了一下,是可以保存對象的。語法很普通,但是cookie的話本身是只能保存string類型的信息的,這就需要先序列化,然后接收的頁面反序列化后形成對象調用,為了防止亂碼,需要在數據傳輸的時候加入編碼格式,涉及到的DLL:Newtonsoft.Json.dll,一個幫助數據序列化成JSON 的組件,DEMO如下:
Student sessionStu = new Student(); sessionStu.sId = 001; sessionStu.sName = "水晶之戀"; Session["obj"] = sessionStu; Student cookieStu = new Student(); cookieStu.sId = 002; cookieStu.sName = "螞蟻上樹"; var res = JsonConvert.SerializeObject(cookieStu); HttpCookie cookie = new HttpCookie("cobj"); cookie.Value = HttpUtility.UrlEncode(res,Encoding.GetEncoding("UTF-8")); Response.Cookies.Add(cookie); Response.Redirect("SessionRes.aspx");
接收頁面:
if(!IsPostBack) { Student resStu = Session["obj"] as Student; Response.Write("session:</br>"); Response.Write(resStu.sId.ToString() + "</br>"); Response.Write(resStu.sName.ToString() + "</br>"); var res = HttpUtility.UrlDecode(Request.Cookies["cobj"].Value, Encoding.GetEncoding("UTF-8")); var stu = JsonConvert.DeserializeObject<Student>(res); Student resStuCookie = stu; Response.Write("cookie:</br>"); Response.Write(resStuCookie.sId.ToString() + "</br>"); Response.Write(resStuCookie.sName.ToString() + "</br>"); }