我有一个视图模型,它会像这样在cshtml视图中显示:
@model MyViewModel
<form action="...">
@foreach (var item in this.Model.MyList)
{
<input type="checkbox" name="item.Name"/>
}
</form>
然后我在后端有一个控制器方法:
[HttpPost]
public ActionResult SaveMyViewModel(MyViewModel viewModel)
{
...
在POST期间检查控制器方法中的viewModel
时,它具有所有null属性。我希望它在MyList
中有值,并且在那里MyList
中每个项目都有布尔值。
没有Ajax,这可能吗?我不能在这里使用ajax。
为了正确地将viewModel的准确表示返回给服务器,必须对表单做些什么?
答案 0 :(得分:0)
我假设您的button
提交form
在<form> element
中的HTML
之内。
将List (Array)
中的Object
的{{1}}从HTML
张贴到Controller
时,需要将List
中每个项目的索引添加到HTML name property
。
此外,name property
也应与Property
代码中的C#
具有相同的名称。
您的代码应如下所示才能正常工作。
<form action="...">
@{
var i = 0;
}
@foreach (var item in this.Model.MyList)
{ var nameChecked = string.Empty;
if(item.Name != null) nameChecked = “checked”;
<input type="checkbox" name="viewModel[i].Name" @nameChecked />
i++;
}
</form>
注意:这是一个基本代码示例。您始终可以增强工作效率。
希望这会有所帮助!