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)