C# IEnumerable视图在控制器中具有空值

C# IEnumerable视图在控制器中具有空值,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我有一个类型为IEnumerable的强类型视图。当我在控制器中迭代IEnumerable时,我接收到空值 查看 @model IEnumerable<MVC.Models.Product> <h2>Product</h2> @foreach (var item in Model) { using (Html.BeginForm("AddToCart", "Home")) {

我有一个类型为
IEnumerable
的强类型视图。当我在控制器中迭代IEnumerable时,我接收到空值

查看

    @model IEnumerable<MVC.Models.Product>
   <h2>Product</h2>
    @foreach (var item in Model)
    {

      using (Html.BeginForm("AddToCart", "Home"))
        {
               @Html.DisplayFor(modelItem => item.ProductID)
            <div>
                @Html.DisplayFor(modelItem => item.ProductName)
            </div>
            <div>
                @Html.DisplayFor(modelItem => item.ProductVendor)
            </div>
            <div>
                @Html.DisplayFor(modelItem => item.ProductDesc)
            </div>
            <div>
                @Html.DisplayFor(modelItem => item.productPrice)
            </div>
            <div>
                @Html.TextBox("Quant")
            </div>
            <div>
                <button type="submit" value="Add to cart">Add to cart</button>
            </div>
        }

    }

每个表单都返回一个MVC.Models.Product,而不是一个集合(IEnumerable)。尝试:

并修改控制器以反映一次只保存一个产品的事实

并加上:

@Html.HiddenFor(modelItem => item.ProductID) 

在displayFor for it下,它会发回。

您是在get操作中还是在POST(您发布的函数)中获得空值?在您看来,您正在创建许多表单。@KirkWoll我已经添加了索引controller@RoelantM在POST操作中,您为集合中的每个项目创建了一个表单,这很有意义(您一次只能提交一个表单。并且您的
foreach
循环正在生成与您的模型没有关系的
name
属性(您还生成了重复的
id
属性,该属性是无效的html)。使用一个表单并将数量属性添加到您的模型中,然后引用@StephenMuecke我已经做了这些更改,但仍然有帮助。我已经尝试过了,但它正在数据库中存储0。我知道了。对,您是3。我编辑了代码,以便将您的productId发送回控制器。
public partial class Product
{
    public int ProductID { get; set; }
    public string ProductName { get; set; }
    public string ProductVendor { get; set; }
    public string ProductDesc { get; set; }
    public double productPrice { get; set; }
}
[HttpPost]
public ActionResult AddToCart(Product p, int Quant)
@Html.HiddenFor(modelItem => item.ProductID)