1
我一直在使用.net MVC一兩年了,這個問題在我的書中一直沒有答案。讓我展示一個很簡單的例子ASP.NET MVC什麼是在post方法中更新數據庫對象的正確方法
PersonViewModel
public class PersonViewModel
{
public Person person { get; set; } //person is a db generated object
public SelectList jobtypes { get; set; } // drop down list for this view
}
PersonController
public ActionResult Edit(int id)
{
PersonViewModel model = new PersonViewModel();
model.person = db.GetPerson(id); //get a person from the db
model.jobtypes = GetThemJobTypes();
return View(model);
}
現在的問題是它的,下面我應該怎麼辦?
[HttpPost]
public ActionResult Edit (PersonViewModel model)
{
Person person = db.GetPerson(model.person.personid);
person.firstname = model.person.firstname;
person.lastname = model.person.lastname;
person.jobtypeid = model.person.jobtypeid;
person.save();
person.favoritetoy.name = model.person.favoritetoy.name;
person.favoritetoy.save();
}
OR
[HttpPost]
public ActionResult Edit (int id, FormCollection formValues)
{
Person person = db.GetPerson(id);
UpdateModel(person, "person");
person.save()
UpdateModel(person.favoritetoy, "favoritetoy");
person.favoritetoy.save()
}
好像用的UpdateModel的方法的FormCollection是首選的無處不在網絡上的方法。我有點衝突的是,我們已經有一個ViewModel與我們想要的字段,爲什麼再次使用formcollection?許多人也指出要嚴格使用視圖模型,但我沒有看到使用該方法更新db模型的好例子。
什麼是更新數據庫對象的預期方式?
此外,因爲使用的是在你的代碼字符串值,如果該模型是改變這不會自動更新我不會用第二個方法。 – 2012-04-20 22:18:06