저는 1 년 또는 2 년 동안 .net MVC를 사용하고 있으며이 질문은 항상 내 책에서 답을 얻지 못했습니다. 내가 아주 간단한 예를ASP.NET MVC 게시 메서드에서 데이터베이스 개체를 업데이트하는 올바른 방법은 무엇입니까
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();
}
또는
그것은 updatemodel와 formcollection 방법처럼 보인다[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()
}
웹 주위 사방 선택의 방법이다. 제가 약간 충돌하는 이유는 우리가 이미 원하는 필드가있는 ViewModel을 가지고 있다는 것입니다. 왜 formcollection을 다시 사용합니까? 많은 사람들이 게시물의 뷰 모델을 엄격하게 사용하도록 지적했지만, 그 방법을 사용하는 db 모델에 대한 좋은 예는 보지 못했습니다.
db 객체를 업데이트 할 예정인 방법은 무엇입니까?
또한 모델을 변경하면 자동으로 업데이트되지 않는 코드에서 문자열 값을 사용하기 때문에 두 번째 방법을 사용하지 않을 것입니다. –