2010-03-16 42 views
0

我有一個行動,基本上增加了一個項目的購物車,購物車的唯一途徑是知道是通過檢查cookie,這裏是邏輯的流程,請讓我知道,如果你看到任何問題...如果發現cookie,獲取數據,否則創建cookie,這是好邏輯嗎?

/order/add/[id]通過GET調用

對cookie進行操作檢查,如果未找到cookie,則會生成新購物車,將標識符寫入cookie並將該項添加到具有關係的數據庫中創建的購物車

如果找到cookie,它從cookie中獲取購物車標識符,獲取購物車對象,並將該物品添加到與購物車關聯的數據庫中

所以基本上就像...

action add(int id){ 

if(cookie is there) 
    cart = getcart(cookievalue) 
else 
    cart = makecart() 
    createcookie(cart.id) 

additemtocart(cart.id, id) 

return "success"; 
} 

似乎是正確?我不能用另一種有意義的方式。

回答

1

您的邏輯看起來不錯,但我會考慮是否需要將購物車內容存儲在數據庫中。除非你有充分的理由,否則我會試着將它添加到會話中。

我還會研究爲購物車對象創建一個自定義模型聯編程序,該聯編程序可以通過新的購物車實例或從訪問者cookie實例化。這樣,你的控制器看起來簡單得多,例如:

public ActionResult Add(Cart cart, int id) 
{ 
    AddItemToCart(cart, id); 
    return View(); 
} 

此外,在一個RESTful應用程序,你應該理想地使用POST方法添加到購物車。

1

對我來說看起來不錯。

/順序/添加/ [id],則通過GET

1)稱爲A車還沒有訂單,但它只是術語。

2)最好使用POST(PUT)來修改數據。

3)將臨時購物車存儲在數據庫中時,請不要忘記安排一些正在運行的清理服務來清除舊的廢棄購物車。

0

關於(唯一)我能想到的是你是否需要在數據庫中存儲任何東西。

如果您允許人們在一臺計算機上瀏覽,然後從另一臺計算機結賬,那麼確定您需要將選定的項目存儲在數據庫中。

但如果您不允許,那麼您可以在cookie中選擇保存數據庫行程的項目。