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>
注意选项后面的数组括号。
为什么当我将 属性 设置为
时,我的网络 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>
注意选项后面的数组括号。