2015-12-07 5 views
5

से सूची बनाएं और पढ़ें <मैं हाल ही में देखे गए उत्पादों को प्रदर्शित करने की कोशिश कर रहा हूं और अब तक मैंने इसे पहले ही कर लिया है। मेरे पास Product तालिका है जिसमें कई उत्पाद संग्रहीत हैं। मेरे पास HomeController है जिसमें Details() की एक कार्य विधि है जो उत्पाद विवरण प्रदर्शित करती है।कुकीज

मैं AddRecentProduct तरीका है जिसके Session

में हाल ही में देखा गया उत्पाद (10) को संग्रहीत करता है लिखा है अब मैं, आगंतुकों कंप्यूटर पर कम से कम 30days के लिए कुकीज़ में इन हाल ही में देखी उत्पाद सूची संग्रहीत करना चाहते हैं क्योंकि सत्र समाप्त हो। हाल ही में आईएमडीबी की तरह देखा।

यदि मैं अपने डेटाबेस RecentlyViewed में कॉलम rv_id, userId, productId के साथ एक और तालिका बनाता हूं तो मैं इस में हाल ही में देखे गए डेटा को कैसे सहेजूं? उपयोगकर्ता आईडी कॉलम लॉग इन उपयोगकर्ता की आईडी रखेगा लेकिन क्या होगा यदि कोई उपयोगकर्ता अतिथि (पंजीकृत नहीं है) तो समाधान क्या है? क्या मुझे GUID का उपयोग करने की आवश्यकता है?

RecentProduct.cs

public class RecentProduct 
{ 
    public int ProductId { get; set; } 

    public string ProdutName { get; set; } 

    public string ImageUrl { get; set; } 

    public DateTime LastVisited { get; set; } 
} 

नियंत्रक

public void AddRecentProduct(List<RecentProduct> list, int id, string name, int maxItems) 
    { 
     var item = recentProductList.FirstOrDefault(t => t.ProductId == id); 
     if (item == null) 
     { 
      list.Add(new RecentProduct 
      { 
       ProductId = id, 
       ProdutName = name, 
       LastVisited = DateTime.Now, 
      }); 
     } 
     while (list.Count > maxItems) 
     { 
      list.RemoveAt(0); 
     } 
    } 

    public ActionResult Details(int? id) 
    { 
     if (id == null) 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     Product product = db.Products.Find(id); 
     if (product == null) 
      return HttpNotFound(); 

     var list = Session["RecentProductList"] as List<RecentProduct>; 
     if (list == null) 
     { 
      list = new List<RecentProduct>(); 
      Session["RecentProductList"] = list; 
     } 
     AddRecentProduct(list, id.Value, product.Name, 10); 
     ViewData["RecentProductList"] = list; 
     return View(product); 
    } 

ProductDetails देखें पृष्ठ

<div class="col-sm-9"> 
      @{ 
       var recentProductList = ViewData["RecentProductList"] as List<Project.Models.RecentProduct>; 
      } 

      @foreach (var recentProduct in recentProductList) 
      { 
       <p>@recentProduct.ProdutName (id: @recentProduct.ProductId)  </p> 
      } 
     </div> 

मैं कर रहा हूँ सत्र के साथ वांछित परिणाम प्राप्त करना, अब मैं कुकीज़ के साथ ऐसा करना चाहता हूं।

यह मैं क्या कोशिश कर रहा हूँ बनाना कुकी है:

List<RecentProduct> yourList = new List<RecentProduct>(); 
     RecentProduct rc = new RecentProduct(); 
     rc.ProdutName = product.Name; 
     rc.ProductId = product.ProductId; 
     rc.ImageUrl = product.ImagePath; 
     rc.LastVisited = DateTime.Now; 
     yourList.Add(rc); 

     var yourListString = String.Join(",", yourList); 
     // Create a cookie 
     HttpCookie yourListCookie = new HttpCookie("YourList", yourListString); 

     // The cookie will exist for 7 days 
     yourListCookie.Expires = DateTime.Now.AddDays(7); 

     // Write the Cookie to your Response 
     Response.Cookies.Add(yourListCookie); 

इस तरह और ProductDetails में देखें पृष्ठ पढ़ने कुकीज़:

@if (Request.Cookies["YourList"] != null) 
    { 
     // Your cookie exists - grab your value and create your List 
     List<string> yourList = Request.Cookies["YourList"].Value.Split(',').Select(x => Convert.ToString(x)).ToList(); 

     // Use your list here 
     <p>@yourList</p> 

    } 

मैं किसी भी परिणाम नहीं मिल रहा है। मैं कुकी और मूल्य कैसे पढ़ सकता हूं?

उत्तर

-1

यदि आप कुकीज़ का उपयोग कर रहे हैं, तो आपको हाल ही में देखा गया तालिका क्यों चाहिए? कुकी में हाल ही में उत्पाद आईडी संग्रहीत करना लॉग-इन और अनाम उपयोगकर्ता दोनों के लिए काम करेगा।

+0

कृपया प्रश्न फिर से पढ़ें। अभी मैं इसे 'सत्र' में संग्रहीत कर रहा हूं और मैं इसे कुकीज़ में उत्पादों की सूची के रूप में स्टोर करना चाहता हूं और मैंने कहा ** अगर ** मैं हाल ही में देखे गए उत्पादों को संग्रहीत करने के लिए एक टेबल तैयार करता हूं जो समाधान होगा। – user3223395667

0

आपके लिए सबसे अच्छा समाधान एचटीएमएल 5 वेब स्टोरेज का उपयोग कर रहा है।
यह आपको स्थानीय ब्राउज़र में 5 एमबी तक स्टोर करने देता है।
आप केवल जावास्क्रिप्ट के माध्यम से पढ़ और लिख सकते हैं।
उदाहरण:

$('#btnLocalStorage').click(function() 
{ 
    var txtName = $("#txtName").val(); 
    //set item 
    localStorage.setItem("EmpName", txtName); 
}); 

$('#btnLocalStorageRemove').click(function() 
{ 
    //remove item 
    localStorage.removeItem("EmpName"); 
}); 
$('#btnLocalStorageClear').click(function() 
{ 
    //clear Local Storage 
    localStorage.clear(); 
}); 
$('#btnLocalStorageLength').click(function() 
{ 
    var localStoragelength = localStorage.length; 
    alert("The length of Local storage is " + localStoragelength); 

}); 

जिस तरह से यह कुछ ही समय समाप्त हो गया है और यू न GUID की जरूरत तक।

संबंधित मुद्दे