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