【问题标题】:MVC 4 - Checkbox List dynamically bind with database table [duplicate]MVC 4 - 复选框列表与数据库表动态绑定[重复]
【发布时间】:2014-07-18 11:14:46
【问题描述】:

我对MVC不是很熟悉吗?任何人都可以在 MVC 中分享有关如何实现复选框与数据库表动态绑定的伪代码吗?这就是我的表的定义方式,也是我试图在视图中获得的输出。

Table - Produce
  ProduceID, Produce Name, Produce Type
    1             Banana        Fruit
    2             Apple         Fruit
    3             Okra          Vegetable
    4             Onion         Vegetable

查看输出

Fruit
   checkbox Banana
   checkbox Apple
Vegetable
   Checkbox Okra 
   checkbox Onion

从复选框中选择的值需要发送到控制器。

感谢任何帮助。

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-4 razor checkbox


    【解决方案1】:

    如果您使用的是实体框架,那么您可以执行以下操作: //创建视图模型:

      public class ProductVM
      {
         string Produce_Name {get; set;}
         string Produce_Type {get; set;}
      }
    

    //在您的数据访问层中: //它将从表格​​中获取您的数据。

      public IEnumerable<ProductVM> GetAllProductList()
      {
        @using(DBContext context = new DBContext() ) 
        {
          return context.Produce.Select( p => new ProductVM () { Produce_Name = v.ProductName; Produce_Type = v.ProduceType;} ).ToList<>(ProductVM) ;
        }
      }
    

    //注意上面代码中ProductType和ProductName指的是EF创建的Context类属性。

    现在将此列表返回到 ViewBag 或 TempData 中的视图,如下所示: // 在控制器中:

    public ActionResult MyProduceAction()
    {
      DAL dal = new DAL();
      var ProductList = dal.GetAllProductList();
      ViewBag.ProductList = ProductList;
      return View();
    }
    

    //在View中访问ViewBag如下:

     @{
        var ProductList = (IEnumerable<ProductVM>)ViewBag.ProductList;
      }
    
    
      @foreach(var p in ProductList)
      {
        @Html.CheckBox(p.Produce_Name, false, new { value = p.Produce_Type });
      }
    

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      你可以这样做:

      控制器

      [HttpGet]
      public ActionResult Products()
      {
          List<ProductModel> products = GetProducts();
          return View(products);
      }
      
      [HttpPost]
      public AcionResult Products(List<ProductModel> products)
      {
          for each (var prd in products) { if prd.IsChecked }
          ... Do something else
      }
      

      型号

      public class ProductModel
      { 
          String ProductName
          String CategoryName
          Bool IsChecked
      }
      

      查看

      @model List<ProductModel>
      <form>
         @for (int i = 0; i <= Model.Count; i++)
          {
                 @Html.TextBlockFor(m => Model[i].ProductName)
                  @Html.CheckBoxFor(m => Model[i].IsChecked)
           }
           <input type"submit" />
      <\form>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-14
        • 2012-10-23
        • 2018-03-11
        • 2012-06-27
        • 1970-01-01
        相关资源
        最近更新 更多