2015-10-25 68 views
-1

我不確定是什麼錯,因爲我對MVC非常陌生。這是一個購物車。客戶可以查看購物車並編輯數量。已發佈模型爲空

在HttpPost ViewCart方法上,購物車始終爲空,行數爲零。

控制器:

public ActionResult ViewCart() { 
    var cart = (CartViewModel)Session["Cart"]; 
    return View(cart); 
} 

[HttpPost] 
public ActionResult ViewCart(CartViewModel cart) { 
    Session["Cart"] = cart; 
    return RedirectToAction("Order", "Checkout"); 
} 

查看:

@model CartViewModel 
using (Html.BeginForm()) { 
    <h2>Your cart</h2> 

    <table> 
     <thead> ... </thead> 
     <tbody> 
      @foreach (var item in Model.Lines) { 
       <tr> 
        <td>@Html.DisplayFor(modelItem => item.Article.Description)</td> 
        <td>@Html.EditorFor(modelItem => item.Quantity)</td> 
       </tr> 
      } 
     </tbody> 
    </table> 

    <input type="submit" value="Checkout"> 
} 

視圖模型:

public class CartViewModel { 
    public List<Line> Lines { get; set; } 

    public CartViewModel() { 
     Lines = new List<Line>(); 
    } 
} 
+0

你不能使用'foreach'循環來生成表單控件 - 你需要使用'for'循環(檢查html之前和之後瞭解差異) –

回答

0

嘗試更改視圖使用索引:

@model CartViewModel 
using (Html.BeginForm()) { 
    <h2>Your cart</h2> 

    <table> 
     <thead> ... </thead> 
     <tbody> 
      @for (int i = 0; i < Model.Lines.Count; i++) { 
       <tr> 
        <td>@Html.DisplayFor(m => Model.Lines[i].Article.Description) @Html.HiddenFor(m => Model.Lines[i].Article.Id)</td> 
        <td>@Html.EditorFor(m => Model.Lines[i].Quantity)</td> 
       </tr> 
      } 
     </tbody> 
    </table> 

    <input type="submit" value="Checkout"> 
} 
+0

謝謝你的工作。你甚至可以預見到我需要一個ID的隱藏字段。 – joakim0112