我想我可能有点困惑:-\
我有一个基本场景,我需要渲染出一个表单列表。我有一个包含实体集合的基本 ViewModel。我有一个用于呈现一组基本输入的实体的 EditorFor 模板。它看起来如下:
@for (var i = 0; i < Model.Count(); i++)
{
using (Html.BeginForm("Update", "VehicleLog", new { id = Model[i].id }, FormMethod.Post, new { @class = "vehicle-update-form std-form", data_ajaxpost = "true", data_refreshcontainer = "#vehicle-ajax-holder" }))
{
@Html.EditorFor(model => model[i])
<div class="buttons right">
<input type="submit" value="Save" name="action" class="btn-ok btn" />
<input type="submit" value="Delete" name="action" class="btn-warning btn" />
</div>
}
}
我有一个 for 循环,然后转储出这些编辑器模板。到目前为止,一切都很好。我的问题是我希望UpdateModel
在我的 POST 操作中使用来更新实体。但是,发送到控制器的数据采用以下格式:
我不完整的操作如下所示:
[HttpPost]
public ActionResult Update(int id, FormCollection data, string action)
{
var response = new JsonResponse();
if (action == "Update")
{
var v = UnitOfWork.VehicleRepository.GetById(id);
UpdateModel(v);
}
return Json(response);
}
我的问题是 EditorFor 助手是(并且正确地)使用数组索引为名称添加前缀,例如[0].name
. 因此,我无法使用 UpdateModel 方法来更新实体。
任何建议表示赞赏!