嗨我想抓取所有用戶修改數據。控制器無法接收模型數據
我的問題是爲什麼控制器無法從我的項目中的視圖接收模型數據。
請解釋爲何導致此錯誤以及如何解決它。
型號:
public class ShoppingCart
{
public List<ShoppingCartItemModel> items = new List<ShoppingCartItemModel>();
public IEnumerable<ShoppingCartItemModel> Items
{
get { return items; }
}
}
public class ShoppingCartItemModel
{
public Product Product
{
get;
set;
}
public int Quantity { get; set; }
}
控制器
[HttpPost]
public RedirectToRouteResult EditFromCart(ShoppingCart MyModel)
{
ShoppingCart cart = GetCart();
foreach (var CartItem in cart.items)
{
foreach (var ReceiveModelItem in MyModel.items)
{
if (CartItem.Product.ProductID == ReceiveModelItem.Product.ProductID)
{
CartItem.Quantity = ReceiveModelItem.Quantity;
}
}
}
return RedirectToAction("Index", "ShoppingCart");
}
查看
@model ShoppingCart
@{
ViewBag.Title = "購物車內容";
}
<h2>Index</h2>
<table class="table">
<thead>
<tr>
<th>
Quantity
</th>
<th>
Item
</th>
<th class="text-right">
Price
</th>
<th class="text-right">
Subtotal
</th>
</tr>
</thead>
<tbody>
@using (Html.BeginForm("EditFromCart", "ShoppingCart", FormMethod.Post))
{
foreach (var item in Model.items)
{
<tr>
<td class="text-center">
@item.Product.ProductName
</td>
<td class="text-center">
@item.Product.Price.ToString("c")
</td>
<td class="text-center">
@((item.Quantity * item.Product.Price).ToString("c"))
</td>
<td class="text-left">
@Html.EditorFor(model => item.Quantity, null, "UserInputQuantity")
@Html.Hidden("ProductId", item.Product.ProductID)
</td>
</tr>
}
<tr>
<td colspan="3">
<input class="btn btn-warning" type="submit" value="Edit">
</td>
</tr>
}
</tbody>
</table>
如果需要其他信息,請告訴我 –
有項目(實體的名單,在購物車中的這項事業的購物項目)的名單不能提交回控制器簡單的MVC/Razor。你將需要使用JavaScript來維護列表並將其作爲json等發佈。網絡上有很多關於開發MVC購物車的文章 – Emil
@Emil當然你可以!你只需要適當地索引它們。模型聯編程序也可以綁定集合和列表。 – juunas