【问题标题】:Insert id into list if checkbox is checked如果选中复选框,则将 id 插入列表
【发布时间】:2014-09-04 07:27:52
【问题描述】:

Net MVC 和我有一张桌子,上面有我想购买的产品。 我想使用复选框来确认购买。

但是如何在 List<int> 中插入 ID?

我有一个类 Approved,其属性为 List<int> approve

我试过了:

  • @Html.CheckBoxFor(m.approve.Add(id))
  • @Html.CheckBoxFor(m=>m.approve.Add(id))
  • @Html.CheckBoxFor(ViewBag.l.approve.Add(id)

如何完成这项任务?

【问题讨论】:

  • 您需要使用说 JQuery 来检查用户是否选中了该框,如果是,则将集合及其在集合中的项目注入 DOM,这样当您发布它时,集合当您执行 AJAX POST 时,还会向控制器发送 POST 或创建数组。看看这里:stackoverflow.com/questions/15782417/… 或这里:stackoverflow.com/questions/6361078/…
  • 您可以考虑使用 CheckedListBox 助手。不幸的是,MVC 没有开箱即用的功能,但请查看 this example

标签: asp.net asp.net-mvc linq checkbox


【解决方案1】:

您可以轻松地将列表绑定到模型:

因此,您只需要创建一个为此创建的类的列表,其中包括整数 id 和一个用于保存复选框状态的布尔值,如下所示:

public class IdState
{
   public int Id {get;set;}
   public bool Checked {get;set;}
}

列表必须属于此类,即List<IdState>

关键是使用这样的语法:

Html.CheckBoxFor(m => m[i].Product)

这将产生和输入谁的名字是这样的:

name="[0].Product"

然后,模型绑定器将自动绑定您的列表。当然,您的帖子操作必须收到List<IdState> 才能正常运行。

【讨论】:

    【解决方案2】:

    您可以使用 html 将 id 插入您的复选框

    @model yourModel
    
    //for generate checkbox
    <input type="checkbox" @(yourmodel ? " checked=checked " : null) name="YourCheckBoxName" value="@model.ID" >
    

    使用 formCollection 从您的视图中获取控制器中的值

    【讨论】:

      【解决方案3】:

      我就是这样解决了这个问题:

      这个 Javascript 函数遍历所有复选框并将选中一次的 Id 保存到隐藏输入中。
      <script> function submit() { var x = new Array(); for (i = 0; i < ids.length; i++){ if ($("#" + ids[i].toString() + ".cb").is(':checked')) { x.push(ids[i]); } } console.log(x.toString()); $("#str").val(x.toString()); } </script>

      切换复选框后,隐藏输入的值被刷新
      <script> $(document).ready(function () { $("input.cb").change(function () { submit(); }); }); </script>

      在这里,我创建了一个包含所有可能 id 的数组,以提高简单性和性能。
      否则我必须遍历所有可能的 id 并检查它们。
      &lt;script&gt;ids.push(@id);&lt;/script&gt;

      这是我的复选框:
      &lt;input type="checkbox" value="@id" id="@id" class="cb" /&gt;

      【讨论】:

        猜你喜欢
        • 2017-01-08
        • 2021-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-24
        • 1970-01-01
        • 2012-01-08
        • 1970-01-01
        相关资源
        最近更新 更多