首页 > 解决方案 > 如何使用 viewbag 和输入类型复选框制作可选项目,并访问控制器中的选中项目

问题描述

考虑我们有这三个表

Tbl产品

+----+----------+-------+
| Id |  Title   | Price |
+----+----------+-------+
|  1 | product1 |  1000 |
|  2 | product2 |  1000 |
|  3 | product3 |  1000 |
|  4 | product4 |  1000 |
+----+----------+-------+

订单

+----+----------+-----------+
| Id | UserName | OrderDate |
+----+----------+-----------+
|  1 | user1    | 6/22/2018 |
+----+----------+-----------+

TblO​​rderItems

+----+---------+-----------+
| Id | OrderId | ProductId |
+----+---------+-----------+
|  1 |       1 |         2 |
|  1 |       1 |         4 |
|  1 |       1 |         5 |
+----+---------+-----------+

我想使用复选框显示产品列表,以便用户可以选择产品

然后在 TblOrders 中插入订单信息,同时在 TblOrderItems 中插入选定的产品 ID。

在控制器中,我获取产品列表并将其放入 ViewBag

public ActionResult Create()
        {
            ViewBag.ProductList = db.TblProducts.ToList();
            return View();
        }


    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "Id,UserName,OrderDate")] TblOrder tblOrder,???????????????)
    {
        if (ModelState.IsValid)
        {
            db.TblOrders.Add(tblOrder);
            foreach (var item in ???????????????)
            {
                db.TblOrderItems.Add(
                    new TblOrderItem()
                    {
                        OrderID=tblOrder.Id,
                        ProductID= item.Id
                    }
                    ); 
            }
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(tblOrder);
    }

在视图中我得到如下 ViewBag:

@model test.Models.TblOrder
@using test.Models
@{
    ViewBag.Title = "Create";
    List<TblProduct> productLists = ViewBag.ProductList;
}

但我不知道如何写下面的部分

    @foreach (var item in productLists)
            {
????????????????????????????????????????
                @*<input name="" type="checkbox" />
            <label>@item.Title</label>*@            
}

如何将复选框与产品绑定以及如何访问控制器中的选择产品 ID?

请考虑我们必须使用 ViewBag而不是ViewModel 来执行此操作,并且输入类型为复选框而不是MVC 复选框列表助手。

谢谢

标签: asp.net-mvccheckboxviewbag

解决方案


推荐阅读