Asp.net mvc 如何保留表单中未更新的对象字段的值

Asp.net mvc 如何保留表单中未更新的对象字段的值,asp.net-mvc,razor,Asp.net Mvc,Razor,我有以下对象,其值以两种不同的形式填写 public class MyObject { public int ID { get; set; } //filled by student [StringLength(20)] public string Field1 { get; set; } //approved by teacher public bool Approve { get; set; } } 学生在表格中填写字段1创建初始记录。稍

我有以下对象,其值以两种不同的形式填写

public class MyObject
{
    public int ID { get; set; }

    //filled by student
    [StringLength(20)]
    public string Field1 { get; set; }

    //approved by teacher
    public bool Approve { get; set; }
}
学生在表格中填写字段1创建初始记录。稍后,在第二个表单中,教师通过单击“批准”复选框来审查和批准记录,并提交表单

以下是第二个表单的cshtml:

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    <div class="form">
        <div class="row">
            <div class="form-group">
                <label class="control-label">Field1</label>
                <br/>
                @Html.DisplayFor(model => model.Field1)
            </div>
        </div>

        <div class="row">
            <div class="form-group">
                <div class="checkbox">
                    <label>
                        @Html.EditorFor(model => model.Approve) Approve
                    </label>
                </div>
            </div>
        </div>

        <div class="row">
            <div class="form-group">
                <div class="form-group">
                    <input type="submit" value="Save" class="btn btn-primary" />
                </div>
            </div>
        </div>
    </div>
}
但是,当教师提交表单时,Field1的值在数据库中消失

请注意,上面的对象定义只是问题的一个示例。实际对象有许多字段(布尔、字符串,甚至图像的二进制字段),学生需要填充这些字段


谢谢

可能最简单的方法是将
Field1
作为隐藏输入提交。Jasen,感谢您的输入!就解决方案的质量(代码、维护等)而言,这可能是非常不理想的。图像场呢?图像保存在数据库字段中。布莱恩,谢谢你的来电!有这么多的字段加上图像的二进制字段。我认为应该有一个更干净的解决办法。我来自Java世界,它只允许更新那些显示为表单字段的字段,其余字段保持不变。ASP.net应该有类似的功能。另一种方法是跟踪记录id和教师更新的字段。然后发布行id,查询数据库中的实体并更新更改的字段。ASP.NET MVC 5是否支持称为表单备份对象的功能?这就是Java world如何保留表单中未更新的对象字段的值。表单备份对象在表单提交时加载,并与表单中的字段组合以形成要保存的更新对象。
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit([Bind(Include = "ID,Approve")] MyObject myobject)
    {
        if (ModelState.IsValid)
        {
            db.Entry(myobject).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(myobject);
    }