Javascript 从div中获取复选框id和值的列表,并将其传递给控制器

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

我得到了一个由我的viewmodel填充的复选框列表。我在checkbox元素中指定id和value。我需要将这些信息保存在数据库中。目前,我将复选框id和复选框值放入一个键值对中,并打算对我的控制器进行ajax调用。有没有更好的方法来实现这一点(mvc)?你会怎么做? 谢谢

我的代码:

看法


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')
});