【问题标题】:mvc4 checkbox update databasemvc4复选框更新数据库
【发布时间】:2014-07-09 11:23:14
【问题描述】:

我从互联网上的某个地方(我不记得它在哪里)拿了一个例子,并将它放入我的应用程序中。该代码有效,但不完全符合我的要求,我似乎无法弄清楚如何完成它。

下面的代码采用所有选中的复选框,并在应有的位置更新数据库。伟大的!但是,当您取消选中复选框时,无法将数据库中的字段从打开更改为关闭。

我怀疑我将不得不重新编写完整的代码,但这就是我目前所拥有的。

查看:

  @foreach (var item in Model)
        {
            <tr>
                @Html.HiddenFor(modelItem => item.id)

                <td class="selectAll">
                    <input type="checkbox" name="complete" value="@item.id"/>

                </td>
            </tr>
         }

控制器:

 [HttpPost]
    public ActionResult Complete(FormCollection c)
    {

        int i = 0;
        if (ModelState.IsValid)
        {

            var DelIDArray = c.GetValues("item.id");
            var DelCompleteArray = c["complete"];

            for (i = 0; i < DelIDArray.Count(); i++)
            {
                string find = DelIDArray[i].ToString();
                deliverylist dels = db.deliverylists.Find(Convert.ToInt32(DelIDArray[i]));
                dels.is_complete = Convert.ToInt32(DelCompleteArray[i]);
                               }
            db.SaveChanges();
        }
        return RedirectToAction("Complete");

    }

【问题讨论】:

    标签: c# asp.net razor checkbox


    【解决方案1】:

    只有在您提交表单时才会触发控制器代码。

    您可以在单击其中一个复选框时使用异步方法 (jquery) 调用更新代码,但是当您真正需要更新一个复选框时,它会为所有复选框评估它。

    如您所料,如果您希望它异步工作,还需要做更多工作。以下是一起使用 mvc4/webapi/jquery 的一些入门知识:

    http://www.codeproject.com/Articles/344078/ASP-NET-WebAPI-Getting-Started-with-MVC-and-WebAP

    【讨论】:

      【解决方案2】:

      下面的代码让我通过,我可以继续工作,但我知道这不可能,我正在寻找合适的解决方案。

      我输入 n 并以 2 为增量的原因是,“完整”复选框数组收集了所有错误的复选框并添加了真正的复选框,同时也抛出了对齐。 (如果有道理的话)

      这是我第一次尝试使用复选框更新数据库

      查看:

      @foreach (var item in Model)
          {
              <tr>
                  @Html.HiddenFor(modelItem => item.id)
      
                  <td class="selectAll">
                       @if (item.is_complete == 1)
                       {
                         @Html.CheckBox("complete", true, new { id = item.id, @value = item.id })
      
                        }
                        else
                        {
                           @Html.CheckBox("complete", new { id = item.id, @value = item.id })
      
                         }
                  </td>
              </tr>
           }
      

      控制器:

      [HttpPost]
      public ActionResult Complete(FormCollection c)
      {
      
          int i = 0;
          if (ModelState.IsValid)
          {
      
              var DelIDArray = c.GetValues("item.id");
              var DelCompleteArray = c["complete"];
      
              var n = 0;
              for (i = 0; i < DelIDArray.Count(); i++)
              {
                  string find = DelIDArray[i].ToString();
                   deliverylist dels = db.deliverylists.Find(Convert.ToInt32(DelIDArray[i]));
                      if (c.GetValues("complete")[n] == "false")
                      {
                          dels.is_complete = 0;
                          n = n + 1;
                      }
                      else
                      {
                          dels.is_complete = 1;
                          n = n + 2;
                      }
                      db.Entry(dels).State = EntityState.Modified;
              }
              db.SaveChanges();
          }
          return RedirectToAction("Complete");
      
      }
      

      【讨论】:

        猜你喜欢
        • 2016-05-16
        • 1970-01-01
        • 2011-11-04
        • 2012-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-10
        • 1970-01-01
        相关资源
        最近更新 更多