程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中Cookie之存儲對象

C#中Cookie之存儲對象

編輯:C#入門知識

C#中Cookie之存儲對象。本站提示廣大學習愛好者:(C#中Cookie之存儲對象)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中Cookie之存儲對象正文


本文經由過程代碼具體給年夜家做講授,詳細內容以下:

做項目進程中,用戶上岸以後,須要將用戶的信息存到Cookie中,但由於Cookie中只能存儲字符串,所以想到了先把用戶實體序列化成Json串,存儲在Cookie中,用到的時刻再拿出來反序列化。

事理很簡略,網上的例子也許多,但照樣碰到一些小艱苦。上面與年夜家分享結果。(我的開辟情況為VS2012,.net framework版本為4.0,)

C#中Json與對象之間的相互轉換

下載並援用Newtonsoft.Json.dll

界說一個簡略的用戶實體:

public class UserInfo
{
 /// <summary>
 /// 用戶稱號
 /// </summary>
 public string UserName { get; set; }
 /// <summary>
 /// 用戶暗碼
 /// </summary>
 public string UserPwd { get; set; }
 /// <summary>
 /// 用戶級別
 /// </summary>
 public string UserLevel { get; set; }
}


將對象序列化成Json串:

 /// <summary>
 /// 將對象序列化成Json
 /// </summary>
 /// <param name="obj">須要序列化的對象</param>
 /// <returns>序列化後的字符串</returns>
 public static string ObjectToJson(object obj)
 {
 return Newtonsoft.Json.JsonConvert.SerializeObject(obj);
 }


將Json串反序列化成對象:

/// <summary>
/// 從Json字符串反序列化為對象
/// </summary>
/// <param name="jsonString">Json字符串</param>
/// <param name="obj">要生成的對象類型</param>
/// <returns>反序列化後的對象</returns>
public static object JsonToObject(string jsonString)
{
 return Newtonsoft.Json.JsonConvert.DeserializeObject<UserInfo>(jsonString);
}


Cookie的應用

將實體序列化為Json並存入Cookie中:

//獲得UserInfo對象

UserInfo enUser=new UserInfo()
{
 UserName="Danny",
 UserPwd="123456",
 UserLevel="admin"
}

//創立Cookie對象
HttpCookie userInfo = new HttpCookie("userInfo");

//將序列化以後的Json串以UTF-8編碼,再存入Cookie
userInfo.Value = HttpUtility.UrlEncode(ObjectToJson(enUser), Encoding.GetEncoding("UTF-8")); 

//將cookie寫入到客戶端
System.Web.HttpContext.Current.Response.SetCookie(userInfo);

//設置cookie保留時光
userInfo.Expires = DateTime.Now.AddMinutes(20);
從Cookie中讀掏出Json串並反序列化成實體

//掏出Cookie對象
HttpCookie userInfoCookie = System.Web.HttpContext.Current.Request.Cookies.Get("userInfo");

//從Cookie對象中掏出Json串
string strUserInfo = HttpUtility.UrlDecode(userInfoCookie.Value, Encoding.GetEncoding("UTF-8"));

//Json串反序列化為實體
UserInfoViewModel userInfo = JsonToObject(strUserInfo) as UserInfoViewModel;
解釋:實體的屬性值有中文時,序列化的字符串存儲到Cookie中時會發生亂碼,為了避免發生亂碼,我們在存入Cookie之前先用UrlEncode()和UrlDecode()對Json串停止編碼與解碼。

並且,普通的閱讀器支撐的Cookie存儲的容量為4k(差也就差一兩個字節),足夠存儲一個經由序列化的對象了。

本文到此為止,願望年夜家愛好。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved