모델을 업데이트 할 수있는 ASP.NET MVC 응용 프로그램을 개발할 때는 업데이트 된 뷰 모델을 가져 와서 현재 업데이트 된 모델과 다시 일치시키는 방법을 알아야합니다. 이 작업을 수행하는 몇 가지 다른 방법이있는 것 같습니다. 모델에 있어야하는 데이터를 컨트롤러에 저장하는 것이 적절한 MVC가 아닌 것처럼 MVC가 아닌지 궁금합니다.
모든 뷰 모델에는 ID가 있습니다 : 전문가
- 항상 모델에 맞는지 확인하십시오.
단점
- ID가 변경되지 않도록주의해야합니다. 그렇지 않으면 액세스 할 수없는 행을 업데이트하는 사용자를 가질 수 있습니다.
노출 된 최소 뷰 모델 만 ID를 갖습니다.
- 사용자가 액세스해서는 안되는 데이터를 업데이트하지 않도록하기 위해 확인 작업이 훨씬 줄었습니다.
단점
- 어떤 뷰 모델이 어떤 모델과 일치하는지 추적하기가 훨씬 더 어렵습니다.
- 사용자가 액세스 할 수없는 데이터를 업데이트하지 않도록 ID가있는 몇 가지 뷰 모델을 확인해야합니다.
ID가없는 뷰 모델이 없습니다.
찬성
- 업데이트를 위해 ID를 확인할 필요가 없습니다.
단점
- 무국적 상태를 포기해야합니다.
두 가지 질문이 있습니다.
첫째, 올바른 선택과 잘못된 선택이 있습니까? (그렇지 않다면, 선택은 의견의 문제이며 두 번째 질문의 의견에 근거한 것이므로 무시해야합니다.)
둘째, 올바른 / 올바르지 않은 선택이 있다면 어느 것입니까?
의견을 명확히하기 위해 데이터베이스 객체와 유사한 뷰 모델이있을 때 이야기하고 있습니다.
이것을 생각하십시오 :
public class InvoiceViewModel //Does not have ID, does not relate to model.
{
public CustomerViewModel CustomerVM { get; set; } //Maybe has ID? Does relate to model.
public AddressViewModel BillingAddressVM { get; set; } //Ditto
public AddressViewModel ShippingAddressVM { get; set; } //Ditto
public List<InvoiceLineItemViewModel> ItemVMs { get; set; } //Each one has an ID?
}
이거 말고:
public class InvoiceViewModel
{
public Customer Customer { get; set; }
public Address BillingAddress { get; set; }
public Address ShippingAddress { get; set; }
public List<InvoiceLineItem> Items { get; set; }
}
You have to abandon statelessness.
-MVC 무의미한 사용을 선택했습니다.