ASP.NET MVC - Jak dokładnie używać View Models
Powiedzmy, że mam stronę, która pozwala na edycję danych użytkownika, więc mam taki ViewModel:
public class UserViewModel {
public string Username { get; set; }
public string Password { get; set; }
public int ManagerId { get; set; }
public string Category { get; set; }
}
Tak więc w mojej akcji EditUser mogę ją przekazać przez spoiwo modelu, a następnie mogę zmapować to do Modelu Domeny:
public ActionResult EditUser(UserViewModel user) {
...
Jednak strona wyświetlająca formularz wymaga również podania szczegółów, takich jak lista menedżerów i kategorii, aby udostępnić listę rozwijaną dla tych pól. Może także wyświetlać listę innych użytkowników na pasku bocznym, dzięki czemu można przełączać się między różnymi edytowanymi użytkownikami.
Więc mam inny model widoku:
public class ViewUserViewModel {
public UserViewModel EditingUser { get; set; }
public IEnumerable<SelectListItem> Managers { get; set; }
public IEnumerable<SelectListItem> Categories { get; set; }
public IEnumerable<SelectListItem> AllUsers { get; set; }
}
Czy to jest właściwy sposób? Czy oba są zgodne z modelami? Jeśli tak, czy istnieje konwencja nazewnictwa, której powinienem użyć, aby odróżnić maszyny wirtualne, które są podobne do modeli i maszyn wirtualnych, które zawierają tylko dane strony?
Czy mam to wszystko źle?