我有以下对象,其值以两种不同的形式填写。
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的值将在数据库中消失。
请注意,上述对象定义只是问题的一个示例。实际对象有许多字段(布尔,字符串,甚至图像的二进制字段),学生需要填写这些字段。
谢谢!