【问题标题】:How to get the selected checkbox value in post action in mvc 2如何在 mvc 2 的 post 操作中获取选定的复选框值
【发布时间】:2011-10-19 19:50:03
【问题描述】:

我有一个从数据库填充的复选框列表,我想在发布操作期间获取每个复选框列表的 ID,以便我可以将其保存在数据库中,下面是代码: 控制器:

  public ActionResult Create()
    {
        ITrackdayRepository trackdayResp = new TrackdayRepository();
        IQueryable<Object> getAllEvents = trackdayResp.GetEventsSelectlist();
        var m = new SelectList(getAllEvents,"ID","Name");
        ViewData["events"] = new SelectList(getAllEvents.ToList(), "EventID","Date");
        return View();
    } 

    //
    // POST: /Admin/Voucher/Create

    [HttpPost]
    public ActionResult Create(FormCollection collection)
    {
        try
        {
            // Get all the selected checkboxlist, do db insertion

            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }

查看

<label>Events</label>
        </td>
        <td>
         <% foreach (var item in (SelectList)ViewData["events"]) { %>
                 <input type="checkbox" name="Name" value="<%=item.Value %>" />
                  <label for="<%=item.Value%>"><%=item.Text%></label>
                  <br />

        <% } %>  
        </td>

我想将复选框列表中选定的 传递给 create 的 post aqction,这样我就可以像 1,2,3,4 一样保存它。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-2 checkbox checkboxlist


    【解决方案1】:

    所有分组的复选框都以数组的形式返回,即您刚刚请求的 1,4,8

    var myAnswers = collection["name"];
    // split myAnswers here if required
    

    在您的代码中还是我在这里遗漏了更大的东西?

    【讨论】:

      【解决方案2】:

      如果您想在发布表单时仅传递选定的复选框,请执行以下操作 [按照建议]:

      var myAnswers = collection["name"];
      

      然后遍历它并保存它,或者你可以尝试这种方式

      ASP.Net MVC List of Checkboxes

      【讨论】:

        【解决方案3】:

        它非常简单。在控制器的 Action 方法的参数列表中使用 FormCollection,然后为模型中的 CheckBoxBox 值创建一个字符串数组。

        现在分配 formvalue["Your_CheckBoxBox_value"].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

        到您的控制器中新创建的字符串数组........

             public ActionResult Create()
        {
            ITrackdayRepository trackdayResp = new TrackdayRepository();
            IQueryable<Object> getAllEvents = trackdayResp.GetEventsSelectlist();
            var m = new SelectList(getAllEvents,"ID","Name");
            ViewData["events"] = new SelectList(getAllEvents.ToList(), "EventID","Date");
            return View();
        } 
        
        //
        // POST: /Admin/Voucher/Create
        
        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                // Get all the selected checkboxlist, do db insertion
                model.CheckBoxValues=collection["Your_CheckBox_valueOnView"].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
        
        
        
        
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
        

        【讨论】:

          【解决方案4】:

          这很简单,在控制器的 Action 方法的参数列表中使用 FormCollection,然后为模型中的 CheckBoxBox 值创建一个字符串数组。

          现在分配

          formvalue["Your_CheckBoxBox_value"].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
          

          到你的控制器中新创建的字符串数组

          public ActionResult Create()
          {
              ITrackdayRepository trackdayResp = new TrackdayRepository();
              IQueryable<Object> getAllEvents = trackdayResp.GetEventsSelectlist();
              var m = new SelectList(getAllEvents,"ID","Name");
              ViewData["events"] = new SelectList(getAllEvents.ToList(), "EventID","Date");
              return View();
          } 
          
          // POST: /Admin/Voucher/Create
          
          [HttpPost]
          public ActionResult Create(FormCollection collection)
          {
              try
              {
                  // Get all the selected checkboxlist, do db insertion
                  model.CheckBoxValues=collection["Your_CheckBox_valueOnView"].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                  return RedirectToAction("Index");
              }
              catch
              {
                  return View();
              }
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-07-07
            • 1970-01-01
            • 1970-01-01
            • 2014-03-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多