如何保留未在表单中更新的对象字段的值

时间:2015-04-11 19:59:19

标签: 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; }
}

学生创建初始记录,其中Field1填写在表单中。稍后,在第二种形式中,教师通过单击“批准”复选框来审核并批准记录,然后提交表单。

以下是第二种形式的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>
}

这是第二种形式的控制器

    [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);
    }

但是,当教师提交表单时,Field1的值将在数据库中消失。

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

谢谢!

0 个答案:

没有答案