2014-02-14 22 views
0

我正在爲客戶建立購物車解決方案,並且我被困在購物籃中。籃子是使用2個表格CartID和CartItems創建的。使用Webmatrix/Razor在表單中更新多行(購物車中的數量)

上籃頁,我剛纔讀的物品的購物車並顯示出來:

var basketowner = Request.Cookies["cart"].Value; 
var basket = db.Query("SELECT * FROM CartItems WHERE [email protected]", basketowner); 

然後將這些列爲如此:

<form action="" method="post"> 
@foreach(var row in basket){ 

     <div class="basketcolumn1">@row.ProductID<input type="hidden" value="@row.CartItemID" name="LineID" /></div> 
     <div class="basketcolumn2">@row.ProductTitle @row.ProductOrientation</div> 
     <div class="basketcolumn3">@row.ProductSize</div> 
     <div class="basketcolumn1"><input type="text" id="quantity" name="quantity" maxlength="2"value="@row.quantity" style="width: 20px;" /></div> 
     <div class="basketcolumn4">&nbsp;</div> 
     <div class="basketcolumn5">@[email protected]</div> 
     <div class="basketcolumn6"><a href="~/Basket-Delete/@row.CartItemID" class="basketdelete">x</a></div> 
     <div class="basketcolumn6"><a href="~/Basket-Update/@row.CartItemID">Update</a></div> 

     <div class="clear"></div> 
    } 

<input type="submit" value="Update" id="submit" name="submit"/> 
</form> 

什麼需要做的是提交各的數量返回到CartItems表並更新。有沒有辦法用單一的表單來做到這一點?

如果不是,我可以提交表單變量(數量)到一個單獨的頁面更新一次嗎?

任何幫助非常讚賞。

回答

0

你應該嘗試這樣一個解決方案:

if (IsPost)掃描輸入字段指定ProductIdname到每個輸入字段

<input type="text" id="quantity" name="@row.ProductID" maxlength="2" 
    value="@row.quantity" style="width: 20px;" /> 

和更新表格

if(IsPost){ 
    foreach (string key in Request.Form){ 
    db.Execute(@"UPDATE CartItems SET quantity = @0 WHERE CartID = @1 AND 
     ProductID = @2", Request.Form[key], basketowner, key); 
    } 
} 
+0

謝謝回答 - 我將代碼放在頁面中,但得到錯誤:'將nvarchar值'31,34'轉換爲數據類型int時轉換失敗。'我嘗試設置關鍵作爲Var或Int,但都失敗。你能建議一種補救辦法嗎? – Acteon

+0

@Acteon,你有哪個命令有異常?爲什麼'31,34'不是你的產品ID整數? – GmG

+0

31,34是CartItem數據庫中行的唯一主鍵ID。行錯誤是: 行24:db.Execute(@「UPDATE CartItems SET quantity = @ 0 WHERE CartID = @ AND AND 我不明白爲什麼它會看不到輸入作爲Int的時候,重新設置在數據庫中 – Acteon

相關問題