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)
如何完成这项任务?
答案 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" />