Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC3如何实现多功能;“添加到购物车”;购物车的功能?_Asp.net Mvc_Asp.net Mvc 3_Shopping Cart - Fatal编程技术网

Asp.net mvc MVC3如何实现多功能;“添加到购物车”;购物车的功能?

Asp.net mvc MVC3如何实现多功能;“添加到购物车”;购物车的功能?,asp.net-mvc,asp.net-mvc-3,shopping-cart,Asp.net Mvc,Asp.net Mvc 3,Shopping Cart,我按照Music store mvc示例创建了自己的简单购物车。问题是,我的商店一次只允许添加一个项目。但现在我需要一种方法,一次将多个项目添加到购物车并指定数量 public int ItemID { get; set; } public string Barcode { get; set; } public string Name { get; set; } public string Description { get; set; } public decimal Price {

我按照Music store 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; }
我正在考虑这样做:,但是我的商品模型没有一个quantity属性来保存所需的购物车数量

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; }
和我的viewmodel:

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; }
}
公共类ItemViewModel
{
公共int ItemID{get;set;}
公共字符串条形码{get;set;}
公共字符串名称{get;set;}
公共字符串说明{get;set;}
公共十进制价格{get;set;}
公共整数数量{get;set;}
}
公共类ItemToCartViewModel
{
公共列表itemToCart{get;set;}
}
在我的post操作中似乎未正确发布(null或未传递值):

[HttpPost]
公共行动结果addtocart(i收集项目)
{ ... }
有什么想法吗

更新:

@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>
}
@model-IList
@{
ViewBag.Title=“搜索项目”;
整数计数=0;
}
搜索项目
@Html.Partial(“\u searchItemSpatial”)
@使用(Html.BeginForm(“addtocart”、“Cart”))
{ 
if(String.IsNullOrEmpty(ViewBag.NoRecord)){
条形码
名称
描述
价格
量
@foreach(模型中的var项目)
{
@DisplayFor(modelItem=>item.Barcode)
@DisplayFor(modelItem=>item.Name)
@DisplayFor(modelItem=>item.Description)
@DisplayFor(modelItem=>item.Price)
@EditorFor(modelItem=>item.Quantity)
计数++;
}
}else{@ViewBag.NoRecord}

}
我还不能发表评论,所以我在这里发布。你能给我们看看风景吗?html很重要

更新: 像这样尝试(在foreach循环中)


然后在此处显示正确呈现的quantity
@Html.TextBox(“[”+count+“].quantity”,item.quantity)

,但一旦我开始执行操作,传递的项目将为空。感谢您的回答。您能解释一下为什么需要隐藏字段吗?因为它们是字段,并且字段绑定到模型!DisplayFor不绑定到模型。让我重新表述一下,为什么需要隐藏字段中的索引?该索引告诉ModelBinder将提交的值视为列表项。这只是惯例,你在哈克的岗位上走对了方向。
@Html.Hidden("["+count+"].ItemID",item.ItemID)
@Html.Hidden("["+count+"].Barcode",item.Barcode)
@Html.Hidden("["+count+"].Name",item.Name)
@Html.Hidden("["+count+"].Description",item.Description)
@Html.Hidden("["+count+"].Price",item.Price)