我有JQuery代码,用于创建将已选中复选框的集合存储为数组。此数组存储为表单上隐藏字段的值,其ID为“CheckedSubGroups”。 隐藏字段已从控制器中获得List的名称:
型号:
public IList<int> SubtGroupPkids { get; set; }
表单上的隐藏字段:
<input type="hidden" id="CheckedSubGroups" name="SubGroupPkids" value="[]" />
JQuery ,用于向数组中添加项目。
$(".SubGroupCheckBoxes").on("click", function() {
if ($(this).is(':checked')) {
var subGroupArray = JSON.parse($("#CheckedSubGroups").val());
subGroupArray.push($(this).attr('data-subGroupPkid'));
$("#CheckedSubGroups").val(JSON.stringify(subGroupArray));
如果我添加这个数组的几个项目(来自调试器):
[15330,16657]
[prototype]: []
length: 2
[0]: "15330"
[1]: "16657"
然后我使用JQuery的.serialize方法序列化表单。
但是我收到一个绑定错误,它无法将数组转换为List。
The value '["15330","16657"]' is not valid for SubGroupPkids.
我哪里错了?
答案 0 :(得分:1)
您需要对Controller中的json数组进行反序列化
var deserializer = new JavaScriptSerializer();
subGroupPkIds = deserializer.Deserialize<List<int>>(serializedData "data submitted to your controller");