3

我有以下视图,其中用户有一个产品表,我需要选择“数量 > 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);
    }
4

1 回答 1

3

由于您使用的是 Html.EditorFor,所以事情很简单。将 productList 作为参数放入您的 Index Action(for 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)
    {
        \\...
    }
于 2012-12-12T08:04:25.653 回答