将Js数组序列化为MVC模型集合时出错

时间:2015-05-11 17:33:45

标签: jquery asp.net-mvc

我有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.

我哪里错了?

1 个答案:

答案 0 :(得分:1)

您需要对Controller中的json数组进行反序列化

 var deserializer = new JavaScriptSerializer();
 subGroupPkIds = deserializer.Deserialize<List<int>>(serializedData "data submitted to your controller");