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?

questionAnswers(3)

yourAnswerToTheQuestion