Я создал свою собственную простую корзину, следуя примеру музыкального магазина mvc. Проблема в том, что мой магазин допускает добавление только одного товара за раз. Но теперь мне нужен способ добавить сразу несколько товаров в корзину и указать количество.
Я думал об этом: Привязка модели к списку , но моя модель товара не имеет свойства количества для хранения необходимого количества корзины.
public int ItemID { get; set; }
public string Barcode { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
и моя модель просмотра:
public class ItemViewModel
{
public int ItemID { get; set; }
public string Barcode { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
}
public class ItemToCartViewModel
{
public List<ItemViewModel> itemToCart { get; set; }
}
, кажется, не публикует должным образом в моем действии сообщения (пустое значение или значения не переданы):
[HttpPost]
public ActionResult addtocart(ICollection<ItemViewModel> items)
{ ... }
Есть идеи?
UPDATE:
@model IList<MyTGP.ViewModels.ItemViewModel>
@{
ViewBag.Title = "Search for Items";
int count = 0;
}
<h2>
Search for Items</h2>
@Html.Partial("_SearchItemsPartial")
@using (Html.BeginForm("addtocart","Cart"))
{
if (String.IsNullOrEmpty(ViewBag.NoRecord)) {
<table>
<tr>
<th>
Barcode
</th>
<th>
Name
</th>
<th>
Description
</th>
<th>
Price
</th>
<th>
Quantity
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Barcode)
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
<td>
@Html.DisplayFor(modelItem => item.Price)
</td>
<td>
@Html.EditorFor(modelItem => item.Quantity)
</td>
</tr>
count++;
}
</table>
} else { @ViewBag.NoRecord }
<p>
<input type="submit" value="add items to cart" />
</p>
}