Javascript问题:在Web API控制器上作为字符串接收的整数数组
当我将属性设置为Javascript问题:在Web API控制器上作为字符串接收的整数数组,javascript,jquery,asp.net-mvc,asp.net-web-api,asp.net-web-api2,Javascript,Jquery,Asp.net Mvc,Asp.net Web Api,Asp.net Web Api2,当我将属性设置为 $("#ProfessionsCheckBoxes input:checked").each(function() { professionsChecked.push($(this).attr("Id")); }); $("#SelectedProfessions").val(professionsChecked); SelectedProfessions是我的视图模型中的字符串列表。 如果我选中两个复选框 我在列表的0索引处进入控制器“2,3”,即:[0]=“2,3”
$("#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>
@如果(Model.Professions!=null)
{
foreach(模型中的var项目)
{
@Html.Label(item.Name)
@复选框(item.Name,item.IsChecked,new{id=item.id})
}
}
注2:我使用form.serialize()方法通过ajax调用提交表单 尝试将值以相同的名称放入
的单独元素中,而不是生成和数组,然后将整个数组内容作为元素的值,如果元素是
,如您在注释中所述,您可以使用:
$("#ProfessionsCheckBoxes input:checked").each(function() {
$("form").append('<input type="hidden" name="SelectedProfessions" value="' + $(this).attr("Id") + '"></input>');
});
$(“#ProfessionScheckBox输入:选中”).each(函数(){
$(“表格”)。附加(“”);
});
希望这能有所帮助,尝试在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>
政治
电影
世界
请注意选项后面的数组括号。这不是发布数组的正确方法,默认模型绑定器无法理解。检查此项我没有asp mvc的经验,您的
SelectedProfessions
元素是什么html类型?此信息可以帮助我重新编写答案以符合您的要求:)
这是html中的一个隐藏字段。它是和
?是的,我更新了我的答案,希望现在答案更准确:)
。