在ASP.NET MVC的“编辑”操作中,可以使用HiddenFieldFor向用户隐藏某些字段.但是,这不会保护字段(例如ID,数据创建日期)不被编辑.
例如,模型学生具有字段ID,名称和生日.我想允许用户更新名称,但不是ID或生日.
对于像这样的编辑动作
public ActionResult Edit(Student student) { if (ModelState.IsValid) { db.Entry(student).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(student); }
如何防止编辑Id和Birthday?谢谢!
解决方法
您应该使用仅包含要编辑的属性的视图模型:
public class EditStudentviewmodel { public string Name { get; set; } }
接着:
public ActionResult Edit(Studentviewmodel student) { ... }
我不建议的另一种技术是从绑定中排除某些属性:
public ActionResult Edit([Bind(Exclude = "Id,Birthday")]Student student) { ... }
或包括:
public ActionResult Edit([Bind(Include = "Name")]Student student) { ... }