Javascript 从div中获取复选框id和值的列表,并将其传递给控制器
我得到了一个由我的viewmodel填充的复选框列表。我在checkbox元素中指定id和value。我需要将这些信息保存在数据库中。目前,我将复选框id和复选框值放入一个键值对中,并打算对我的控制器进行ajax调用。有没有更好的方法来实现这一点(mvc)?你会怎么做? 谢谢 我的代码: 看法Javascript 从div中获取复选框id和值的列表,并将其传递给控制器,javascript,jquery,asp.net-mvc-3,razor,Javascript,Jquery,Asp.net Mvc 3,Razor,我得到了一个由我的viewmodel填充的复选框列表。我在checkbox元素中指定id和value。我需要将这些信息保存在数据库中。目前,我将复选框id和复选框值放入一个键值对中,并打算对我的控制器进行ajax调用。有没有更好的方法来实现这一点(mvc)?你会怎么做? 谢谢 我的代码: 看法 DOM元素的id有一些限制。例如,它不能以数字开头。我建议您使用HTML5 data-*属性来保存此元数据信息: @Html.CheckBoxFor( model => item.Value
DOM元素的id有一些限制。例如,它不能以数字开头。我建议您使用HTML5 data-*属性来保存此元数据信息:
@Html.CheckBoxFor(
model => item.Value,
new { data_id = item.Key.subjectID }
)
然后在javascript中:
$('.divSubject input[type=checkbox]').each(function () {
var id = $(this).data('id')
dict.push({
key: id,
value: $(this).attr('checked')
});
alert(JSON.stringify(dict))
});
除此之外,您的代码似乎很好。您的代码运行得很好,但我相信您希望获得键和布尔值对。在这种情况下,考虑下面的代码:
dict.push({
key: id,
value: !!$(this).attr('checked')
});
$(this).attr('checked')将返回“checked”或null,而不是布尔值。为什么不使用复选框的NAME属性,这是POST数据标准的一部分?
$('.divSubject input[type=checkbox]').each(function () {
var id = $(this).data('id')
dict.push({
key: id,
value: $(this).attr('checked')
});
alert(JSON.stringify(dict))
});
dict.push({
key: id,
value: !!$(this).attr('checked')
});