我正在尝试在ASP.NET MVC Web应用程序中使用Entity Framework。
假设我有一个实体“人”,带有一些字面上的细节。
我的Web应用程序有一个视图,使用Ajax,我可以逐个更改我的详细信息。
例如,我只能使用Ajax帖子更改我的实体的“名称”。
在我的“人”实体中,在我的控制器中实现此更新的方法的最佳做法是什么? 我想创建一个通用的“更新”方法,而不是每个单个属性的特定方法。
感谢您的帮助
答案 0 :(得分:2)
public ActionResult Update(int id, string propertyName, object propertyValue)
{
using(var ctx = new Db())
{
var person = ctx.People.First(n => n.Id == id);
Type t = person.GetType();
PropertyInfo prop = t.GetProperty(propertyName);
prop.SetValue(person, propertyValue, null);
ctx.SaveChanges();
}
return Json(new { Success = true });
}
答案 1 :(得分:2)
你为什么要那样做?只需传递整个实体并进行更新,无论如何它都在您的视图模型中。
[HttpPost]
public ActionResult Edit(People people)
{
if (ModelState.IsValid)
{
db.Entry(people).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(people);
}