我的cshtml:中有这个
<div class="row checkbox-group">
@foreach (var category in Model._categories)
{
<div class="col-12 col-sm-6 col-md-4 col-lg-3" data-toggle="tooltip" data-placement="top" title="@category.Description">
<input type="checkbox" name="ChosenCategories[]" value="@category.Id" id="checkbox-@category.Id" />
<label class=" btn btn-flat" for="checkbox-@category.Id">
<i class="material-icons-round">
@category.Icon
</i>@category.Name
</label>
</div>
}
</div>
使用serializeArray发送数据
formData = $('form').serializeArray();
我可以在控制台中确认数据是这样发送的。
0: {name: 'ChosenCategories[]', value: '1005'}
1: {name: 'ChosenCategories[]', value: '1006'}
2: {name: 'ChosenCategories[]', value: '1009'}
3: {name: 'ChosenCategories[]', value: '1010'}
但是在控制器中,模型绑定和Request.Form["ChosenCategories"]也是空的。
模型的重要部分如下:
public partial class MyClass
{
public MyClass()
{
ChosenCategories = new HashSet<ChosenCategories >();
}
public virtual ICollection<ChosenCategories > ChosenCategories { get; set; }
}
我正在尝试将ChosenCategories[]绑定到我的模型,但它不起作用。控制器中的数据(Request.Form["ChoosenCategories"](显示为空白。我做错了什么?
下面是一个使用ajax将数组传递给操作的演示:
视图:
<div class="row checkbox-group">
@{var i=0;}
@foreach (var category in Model._categories)
{
<div class="col-12 col-sm-6 col-md-4 col-lg-3" data-toggle="tooltip" data-placement="top" title="@category.Description">
<input type="checkbox" name="ChosenCategories[@i]" value="@category.Id" id="checkbox-@category.Id" />
<label class=" btn btn-flat" for="checkbox-@category.Id">
<i class="material-icons-round">
@category.Icon
</i>@category.Name
</label>
</div>
i++;
}
</div>
这样你的阵列将是:
0: {name: 'ChosenCategories[0]', value: '1005'}
1: {name: 'ChosenCategories[1]', value: '1006'}
2: {name: 'ChosenCategories[2]', value: '1009'}
3: {name: 'ChosenCategories[3]', value: '1010'}
ajax(如果要在ajax中传递数组,则需要使用json类型的数据(:
function test() {
var s = $("#test").serializeArray();
$.ajax({
url: "Test",
type: 'post',
data: JSON.stringify(s),
contentType: "application/json",
success: function (response) {
//end of Ajax
}
});
}
动作:
public IActionResult Test([FromBody]List<Category> l)
{
return View();
}
类别:
public class Category {
public int value { get; set; }
public string name { get; set; }
}