Javascript 问题:在 Web API 控制器上以字符串形式接收的整数数组

Javascript issue: Array of integers recieved as a string at the Web API controller

为什么当我将 属性 设置为

时,我的网络 api 控制器中出现一个字符串
$("#ProfessionsCheckBoxes input:checked").each(function() { 
professionsChecked.push($(this).attr("Id")); 
}); 
$("#SelectedProfessions").val(professionsChecked);

SelectedProfessions 是我的视图模型中的字符串列表。 这真的很令人沮丧就像我选中两个复选框一样,

我在列表的 0 索引处进入我的控制器“2,3”,即:[0] = "2,3"。不是像这样的列表:[0] ="2"[1] = "3"

注1: 这就是我生成复选框的方式:

<div id="ProfessionsCheckBoxes" class="some item">
            <div class="form-group thirds">
                @if (Model.Professions != null)
                {
                    foreach (var item in Model.Professions)
                    {
                        <div class="one-third">
                            @Html.Label(item.Name)
                            @Html.CheckBox(item.Name, item.IsChecked, new {id = item.Id})
                        </div>
                    }
                }
            </div>
        </div>

注意 2:我通过使用 form.serialize() 方法的 ajax 调用提交表单。

尝试将值放在 <form> 的单独元素中,使用相同的名称而不是生成和数组,然后将整个数组内容作为元素的值,如果元素是 <input type="hidden"> 正如您在评论中所说,您可以使用:

$("#ProfessionsCheckBoxes input:checked").each(function() { 
  $("form").append('<input type="hidden" name="SelectedProfessions" value="' + $(this).attr("Id") + '"></input>');
});

希望这对您有所帮助,

尝试将 HTML 中输入的名称编辑为类似以下内容:

<form method="get">
    <input type="checkbox" name="options[]" value="Politics"/> Politics<br/>
    <input type="checkbox" name="options[]" value="Movies"/> Movies<br/>
    <input type="checkbox" name="options[]" value="World "/> World<br/>
    <input type="submit" value="Go!" />
</form>

注意选项后面的数组括号。