【问题标题】:ASP.net MVC Get only the selected rows (checkbox)ASP.net MVC 仅获取选定的行(复选框)
【发布时间】:2011-01-05 16:44:17
【问题描述】:

我们正在使用 asp.net mvc,在选择已批准订单列表时遇到问题。

通过选中每个订单的复选框来批准订单。

例如..

订单 id 产品已获批准 1 本书(取决于用户是否选择复选框) 2 支笔(取决于用户是否选择复选框)

所以目前我们正在做这样的事情:并想知道是否有更好的实施方式

查看:

我们的错误(由微软生成)

关于 Post in Controller 动作方法: 我们遍历 Orders(这是 Order 对象的列表) in response(order id) = true,false: 然后我们选择该订单,否则我们不选择

但你看到我们想避免在控制器中编写该逻辑。

有什么想法吗?

【问题讨论】:

    标签: asp.net-mvc model-view-controller


    【解决方案1】:

    最近我回答了类似的问题:

    ASP.NET MVC Checkbox Group

    你可以这样做(这将是可行的 foreach 循环):

    <% int i = 0; foreach(Order o in Model.Orders) { %>
    <%= Html.CheckBox("orders[" + i + "].Checked") %>
    <%= Html.Hidden("orders[" + i "].ID",Order[i].ID) %>
    <%= Html.Hidden("orders[" + i + "].Checked",false) %>
    <% ++i; } %>
    

    您的发布方法将是:

    [HttpPost]
    public ActionResult Test(OrdersSelection[] orders)
    {
        var selectedOrders = orders.Where(o => o.Checked);
        return View();
    }
    

    模型将是

    public class OrdersSelection
    {
         public bool Checked { get; set; }
         public bool ID { get; set; }
    }
    

    【讨论】:

      【解决方案2】:

      您可以在客户端脚本中执行此操作,方法是在用户勾选/取消勾选时从单个隐藏输入中附加/删除订单 ID。根据需要使用数组 push/splice 并使用 join 存储在隐藏字段中。
      然后控制器只需读取一个响应值即可获取(逗号分隔?)选定订单 ID 的列表。

      【讨论】:

        【解决方案3】:
        public virtual ActionResult MyAction(FormCollection fVals)
        {
        
            var q = from x in fVals.AllKeys
                    where fVals[x] != "false"
                    select x;
            var ids = q.ToList();
        
        
            // take id and call service with filter
            var result = this.myService.FilterResultByID(ids);
        
        
            // then return model
            return View(result);
        
        
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-07
          • 1970-01-01
          • 2011-06-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多