如果选中复选框,则将id插入列表

时间:2014-07-14 11:30:06

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

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)

如何完成这项任务?

3 个答案:

答案 0 :(得分:0)

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

所以,你只需要创建一个为此创建的类的列表,其中包括整数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>才能正常运行。

答案 1 :(得分:0)

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

@model yourModel

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

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

答案 2 :(得分:0)

我解决了这个问题:

此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并检查它们 <script>ids.push(@id);</script>

这是我的复选框:
<input type="checkbox" value="@id" id="@id" class="cb" />