試圖建立一個(非常)簡單的購物車。我使用Sessions在PHP中完成了這項工作,我可以告訴它與ASP Sessions有點不同。對於初學者來說,PHP會話只是服務器端的cookie。在ASP C#中,我發現他們在關閉應用程序時重置自己。然而這對我正在嘗試做的事很好。但是我遇到了一個障礙,因爲我無法弄清楚如何創建一個可以隨時添加的動態會話。ASP C#動態會話
什麼莫名其妙的我的是,如果我這樣做只是這有一個cookie,這將是很大的不同:
<a href="@Url.Action("TestSession", "Products")" class="AddLink"><button class="btn btn-default"> Add to Cart </button></a>
<a href="@Url.Action("TestSession2", "Products")" class="AddLink"><button class="btn btn-default"> Add to Cart </button></a>
:
public ActionResult TestSession()
{
List<int> ids = new List<int> { 1, 2, 3, 4, 5 };
Session["myIds"] = ids;
return RedirectToAction("Index");
}
public ActionResult TestSession2()
{
List<int> ids = new List<int> { 11, 12, 13, 14, 15 };
Session["myIds"] = ids;
return RedirectToAction("Index");
}
現在我在我的MVC視圖一個簡單的標籤測試這些
使我感到困惑的一點是,當我調試時,Session [「myIds」]只保留它所點擊的值。如果我點擊第一個,那麼myIds將是1,2,3,4,5,如果我點擊第二個,那麼它會刪除第一個,並確定11,12,13,14,15 ..這是完全的與PHP會話相反。現在,如果我用ASP cookie做了這個(不知道我是否可以插入一個List到一個cookie),那麼它會堅持下去。
所以我的問題是如何創建一個會話,我可以簡單地添加到但不刪除之前的值?我確實試圖創建一個全球會議,但不太明白如何做到這一點。
AH!好的謝謝!很好的答案。但這是一個動態會議,不是嗎?無論哪種方式,謝謝很多人! – 2014-11-22 19:17:31
不,正如我所說的那樣,「動態會話」不存在。每個[session](http://msdn.microsoft.com/en-us/library/ms178581(v = vs.100).aspx)都有一個Session對象。會話狀態存儲在服務器內存中(或者可以爲數據庫配置),並且由於包含會話ID的Cookie,服務器知道哪個會話屬於哪個連接(或者,如果啓用了無Cookie會話,則它會存儲會話ID在URL中)。 – mason 2014-11-22 19:19:52
是的,但動態只是意味着它不是靜態的,並且通過執行你的方法,這就是動態定義,因爲我們在聲明之後添加它。 – 2014-11-22 19:21:33