ASP.NET MVC - So verwenden Sie View Models genau

Angenommen, ich habe eine Seite, auf der die Details eines Benutzers bearbeitet werden können, sodass ich ein ViewModel wie das folgende habe:

public class UserViewModel {
    public string Username { get; set; }
    public string Password { get; set; }
    public int ManagerId { get; set; }
    public string Category { get; set; }
}

Bei meiner EditUser-Aktion kann ich dies vom Model-Binder zurückgeben lassen und das dann dem Domain-Modell zuordnen:

public ActionResult EditUser(UserViewModel user) {
    ...

Die Seite, auf der das Formular angezeigt wird, benötigt jedoch auch Details wie eine Liste von Managern und Kategorien, um Dropdown-Listen für diese Felder bereitzustellen. Möglicherweise wird auch eine Liste anderer Benutzer in einer Seitenleiste angezeigt, sodass Sie zwischen den verschiedenen Benutzern wechseln können, die Sie bearbeiten.

Also dann habe ich ein anderes Ansichtsmodell:

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; }
}

Ist das der richtige Weg? Sind beide View Models? Wenn ja, gibt es eine Namenskonvention, die ich verwenden sollte, damit ich zwischen VMs, die wie Modelle aussehen, und VMs, die nur Daten für die Seite enthalten, unterscheiden kann?

Habe ich das alles falsch verstanden?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage