0

我想我可能有点困惑:-\

我有一个基本场景,我需要渲染出一个表单列表。我有一个包含实体集合的基本 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 方法来更新实体。

任何建议表示赞赏!

4

0 回答 0