Je travaille sur un nouveau projet, et, après avoir vu certaines des difficultés des projets antérieurs qui ne fournissaient pas assez de séparation de vue de leurs modèles (en particulier en utilisant MVC - les modèles et les vues ont commencé à se réduire un peu), Je voulais utiliser MVVM.Quelle est la granularité appropriée dans la construction d'un ViewModel?
Je comprends le concept de base, et je suis ravi de commencer à l'utiliser. Cependant, une chose qui m'échappe un peu - quelles données devraient être contenues dans le ViewModel?
Par exemple, si je crée un ViewModel qui comprendra deux éléments de données afin qu'ils puissent être éditées sous une forme, puis-je capturer comme ceci:
public PersonAddressViewModel {
public Person Person { get; set; }
public Address Address { get; set; }
}
ou comme ceci:
public PersonAddressViewModel {
public string FirstName { get; set; }
public string LastName { get; set; }
public string StreetName { get; set; }
// ...etc
}
Pour moi, le premier se sent plus correct pour ce que nous essayons de faire. Si nous faisions plus de formes de grains fins (peut-être que tout ce que nous capturions était FirstName, LastName, et StreetAddress), alors il serait plus logique de descendre à ce niveau. Mais, j'ai l'impression que le premier est correct puisque nous capturons TOUTES les données de la personne dans le formulaire et toutes les données d'adresse. Il semble que cela n'a pas de sens (et beaucoup de travail supplémentaire) de séparer les choses comme ça.
Appréciez tout aperçu.
asp.net MVC n'utilise pas MVVM, MVVM est utilisé dans des technologies telles que Silverlight et WPF, et peut également être utilisé dans les technologies côté client comme Knockout.js, mais asp.net MVC lui-même n'utilise pas mvvm. Ne confondez pas mvvm avec simplement un modèle de vue. –
@MystereMan - J'ai compris. Mon erreur. (Sur la base de ma lecture, il semble que beaucoup de gens font la même erreur.) Parce que j'ai fait cette erreur - pouvez-vous me montrer des articles de pourquoi ASP.NET ne peut pas tirer parti du modèle MVVM? Est-ce quelque chose qui hérite de la conception du cadre? Appréciez-le. – JasCav
MVVM est un modèle très spécifique. Ce n'est pas que MVC ne peut pas "tirer parti" de MVVM, c'est qu'ils sont mutuellement exclusifs. MVVM n'a pas de contrôleur et MVC le fait. (ce n'est pas la seule différence, mais c'est une énorme différence qui les rend mutuellement exclusifs). Ils sont juste deux modèles d'interface différents. Voici un bon article sur la différence. http://russelleast.wordpress.com/2008/08/09/overview-of-the-modelview-viewmodel-mvvm-pattern-and-data-binding/ –