如何在ActionResult中使用Binding生成的实例

时间:2014-11-05 01:41:19

标签: asp.net-mvc asp.net-mvc-4 model-view-controller

这是一个涉及MVC编辑生命周期的一般概念问题。

据我所知,Edit GET操作从db上下文中提取请求的实例,然后将该实例传递给Edit View(实例称为视图模型)。

编辑视图使用以下内容:

@Html.HiddenFor(model => model.SomethingIDoNOTWantEdited)
<div class="form-group">
    @Html.LabelFor(model => model.SomethingIDoWantEdited, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.SomethingIDoWantEdited, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.SomethingIDoWantEdited, "", new { @class = "text-danger" })
    </div>
</div>

显示视图模型的部分或全部属性,以便用户可以根据需要更改值。

当用户单击“提交”按钮时,将调用“编辑POST操作”,并在使用此类

时使用
[HttpPost]
public ActionResult Edit([Bind(Include = "Id, SomethingIDoWantEdited, SomethingIDoNOTWantEdited")] MyClass viewModel)

制作一个名为viewModel的MyClass类型的明亮闪亮新对象。

现在,我知道我可以对上下文进行查询并获取具有该Id的db中的当前对象,然后将所有字段从viewModel复制到现有字段,然后将原始文件标记为已修改,然后调用SaveChanges ()。当只有少数属性可以复制时,这并不算太糟糕,但是当它们有很多属性时会变得很麻烦。

是否有更好的方法可以将用户更改的项目写回数据库?

0 个答案:

没有答案