私は.netMVCを1、2年使用していますが、この質問は私の本では常に答えられていません。非常に簡単な例を示しましょう
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();
}
また
[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メソッドは、Web全体で選択されているメソッドのようです。私が少し矛盾しているのは、必要なフィールドを持つViewModelがすでにあるということですが、なぜフォームコレクションを再度使用するのですか?多くの人が投稿でビューモデルを厳密に使用することも指摘していますが、その方法を使用したdbモデルの更新の良い例は見ていません。
dbオブジェクトを更新する意図された方法は何ですか?