我有以下视图,其中用户有一个产品表,我需要选择所有数据,其中“数量> 0”默认为0.但我不知道如何从表中获取数据集合。谢谢你的回复。
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Produkty</legend>
<table>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(model => item.Product.Name)
</td>
<td>
@Html.DisplayFor(model => item.Product.Price)
</td>
<td>
@Html.EditorFor(model => item.Quantity)
</td>
</tr>
}
<p>
<input type="submit" value="Orders" />
</p>
</table>
</fieldset>
}
//控制器
public ActionResult Index()
{
List<ProductListViewModel> productList = new List<ProductListViewModel>();
foreach (var item in db.Products.ToList())
{
ProductListViewModel model = new ProductListViewModel();
model.Product = item;
model.Quantity = 0;
productList.Add(model);
}
return View(productList);
}
答案 0 :(得分:3)
由于你使用的是Html.EditorFor,事情很简单。 将productList作为参数放入Index Action(对于Post),MVC会自动将表单数据组合到productList对象,因此您只需要通过循环过滤服务器端的数量。 当然,要识别产品对象,最好还在视图中添加隐藏ID。
<table>
@for(int i = 0; i<Model.Count; i++) {
<tr>
<td>
@Html.HiddenFor(model => Model[i].Product.ID)
@Html.DisplayFor(model => Model[i].Product.Name)
</td>
<td>
@Html.EditorFor(model => Model[i].Quantity)
</td>
</tr>
}
[HttpPost]
public ActionResult Index(List<ProductListViewModel> productList)
{
\\...
}