我正在尝试将视图的表值返回给控制器以保存在db上,但是我一直在获取null。我可以毫无问题地发布值并将它们绑定到视图。
我不明白为什么,我正在使用服务器侧视图模型。
有什么方法可以执行此操作吗?
查看:
@model IEnumerable<MultiEdit.Models.TableViewModel>
@using (Ajax.BeginForm("Save", "UUTs", new AjaxOptions
{
HttpMethod = "Post",
}, new { id = "tableForm" }))
{
@Html.AntiForgeryToken()
<div class="row" style="padding-top:10px;">
<div class="col-lg-12">
<table class="table table-bordered table-striped ">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.IsChassis)
</th>
<th>
@Html.DisplayNameFor(model => model.Justification)
</th>
</tr>
</thead>
<tbody id="tblMultiEdit">
@foreach(var item in Model)
{
<tr>
<td>
@Html.CheckBoxFor(modelItem => item.CheckIsChassis)
</td>
<td>
@Html.EditorFor(modelItem => item.Justification)
</td>
</tr>
}
</tbody>
</table>
</div>
</div>
}
控制器:
public void Save(IEnumerable<TableViewModel> vm)
{
DoSomething();
}
答案 0 :(得分:0)
您需要使用for循环和索引限定符遍历集合。如下所示。语法不正确,但是您应该能够理解我的意思。
@for(var index = 0; index <= Model.Count - 1; index++)
{
<tr>
<td>
@Html.CheckBoxFor(modelItem => Model[index].CheckIsChassis)
</td>
<td>
@Html.EditorFor(modelItem => Model[index].Justification)
</td>
</tr>
}
这是必需的,因此索引可用于创建Enumerable项目的唯一ID并辅助模型绑定
希望有帮助
答案 1 :(得分:0)
我使用IEnumerable的IList insead解决了它。
查看:
@model IList<MultiEdit.Models.TableViewModel>
@Html.CheckBoxFor(modelItem => modelItem[index].CheckIsChassis, new { @class = "form-control" })
控制器:
public void Save(IList<TableViewModel> vm)
{
var x = vm;
}