View Full Version : سوال: ذخیره کردن لیست در کوکی
aroshanzamir
شنبه 17 خرداد 1393, 21:23 عصر
سلام دوستان :
من چطوری می تونم یک لیست ژنریک را در کوکی ذخیره کنم و بعد مقدار ها را بخونم ؟
حالا مشکل قرار دادن لیست در کوکی نیست
زمانی که می خواهیم اطالاعات را بخونیم میگه نمی تونم مقدار String را به List تبدیل کنم :
public class Product
{
public int Code { get; set; }
public string Name { get; set; }
}
//Write
List<Product> LstProduct = new List<Product>()
{
new Product(){ Code=1 , Name="AAAA"},
new Product(){ Code=2 , Name="BBBB"}
};
HttpCookie cookie = new HttpCookie("cart");
cookie.Values["Products"] = LstProduct.ToString();
cookie.Expires = DateTime.Now.AddSeconds(180);
Response.Cookies.Add(cookie);
//Read
if (Request.Cookies["cart"] != null)
{
HttpCookie cookie = Request.Cookies["cart"];
//Hss Error
List<Product> Lst = cookie.Values["Products"] as List<Product>;
//OR List<Product> Lst = (List < Product >)cookie.Values["Products"];
}
ahmad156
شنبه 17 خرداد 1393, 22:00 عصر
کوکی فقط مقدار String میگیره
پس دو راه داری:
1-Serialize و DeSerialize کردن list و ذخیره اون در Cookie که یه خرده سنگین میشه
2-استفاده از Session به جای کوکی
aroshanzamir
شنبه 17 خرداد 1393, 22:36 عصر
امکانش هست یه مثال بزنی از Srialize کردن :
ahmad156
شنبه 17 خرداد 1393, 23:20 عصر
private void SerializeList()
{
List<Employee> emps = new List<Employee>();
emps.Add(new Employee("1", "Sabu"));
emps.Add(new Employee("2", "John"));
emps.Add(new Employee("3", "Tom"));
emps.Add(new Employee("4", "George"));
string serializedXmlString = XmlSerialize(emps);
List<Employee> deserializedEmps = XmlDeserialize(serializedXmlString);
}
public string XmlSerialize(List<Employee> emps)
{
System.Xml.Serialization.XmlSerializer xmlSer = new System.Xml.Serialization.XmlSerializer(emps.GetTyp e());
StringWriter textWriter = new StringWriter();
xmlSer.Serialize(textWriter, emps);
xmlSer = null;
return textWriter.ToString();
}
public List<Employee> XmlDeserialize(String data)
{
System.Xml.Serialization.XmlSerializer xmlSer = new System.Xml.Serialization.XmlSerializer(typeof(List<Employee>));
TextReader reader = new StringReader(data);
object obj = xmlSer.Deserialize(reader);
return (List<Employee>)obj;
}
[Serializable]
public class Employee
{
public Employee()
{
ID = "";
Name = "";
}
public Employee(String id, String name)
{
ID = id;
Name = name;
}
public string ID { get; set; }
public string Name { get; set; }
}
aroshanzamir
شنبه 26 مهر 1393, 13:18 عصر
سلام احمد آقا یه راهنمایی می خواستم :
من می خواهم اطلاعات سبد خرید را در کوکی ذخیره کنم و رمز نگاری هم کنم
با این اوصاف لیستم را یک بار باید سریالایز کنم و بعد رمز نگاری کنم و بعد از رمز نگاری که خروجی آرایه ای از بایت ها می باشد باید آن را سریالایز کنم تا بتوانم در کوکی ذخیره کنم ؟
به نظر شما این کار ر بار زیادی ایجاد می کند ؟
روش بهتری برای این کار هست ؟
در ضمن حتما باید از کوکی استفاده کنم
ممنون
ahmad156
شنبه 26 مهر 1393, 13:21 عصر
سبد خرید رو توی Session ذخیره کنین
aroshanzamir
شنبه 26 مهر 1393, 13:24 عصر
نمی خواهم از سشن استفاده کنم با کوکی چطور می تونم این کار را انجام بدم ؟
ahmad156
شنبه 26 مهر 1393, 13:34 عصر
چون به ازای هر درخواست باید کوکی به سرور ارسال بشه استفاده از کوکی پیشنهاد نمیشه.از Session بابت سبد خرید استفاده کنین.
چه دلیلی داره که از Session استفاده نمیکنین؟
aroshanzamir
شنبه 26 مهر 1393, 13:39 عصر
می خواستم ماژول سشن را حذف کنم ... برای همزمانی پاسخ به در خواستها
ahmad156
شنبه 26 مهر 1393, 13:43 عصر
هم خدا رو میخواین هم خرما:لبخند:
پس حجم اطلاعات ذخیره شده توی Cookie رو به حداقل برسونین
aroshanzamir
شنبه 26 مهر 1393, 13:45 عصر
مشکل اصلی فقط همین سبد خرید است ....
نمی دونم برای این اطلاعات که توی کوکی می گزارم از چه روشی استفاده کنم که مقرون به صرفه باشه
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.