2010-12-15 89 views
0

Je suis curieux de savoir ce que les gens considèrent comme une meilleure pratique, entre dupliquer la structure du modèle dans le modèle de vue et utiliser un outil de mappage pour déplacer les données entre eux Agréger le modèle dans le modèle de vue, c'est-à-dire avoir une propriété sur la classe de modèle de vue qui est une référence au modèle réel. Qu'est-ce qui est considéré comme une meilleure approche en général?Pour mapper des classes de modèles aux classes ViewModel ou agrégées Classes de modèles dans les classes ViewModel

+0

N'est-ce pas la même chose que votre dernière question? – jfar

+0

@jfar, non, ma dernière question concerne l'utilisation des attributs d'annotation de données. Le fait que j'ai mentionné les deux approches que je pose réellement dans cette question ne change pas ce que l'autre question demande réellement. Je les ai séparés pour essayer d'éviter de trop demander en une question. – ProfK

+0

Ensuite, vous voudrez peut-être envisager de supprimer cette ligne de votre autre question: "Dois-je m'en tenir à mon approche actuelle et à la conception de ViewModelBase, ou passer rapidement à l'approche de cartographie?" – jfar

Répondre

0

L'approche « mieux » sera toujours d'avoir un modèle de vue distinct pour chaque vue, puis en utilisant AutoMapper ou quelque chose de similaire pour gérer les entrailles des applications pour vous

public class MyViewModel 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 

    public MyViewModel() { } 
    public MyViewModel(MyModel model) 
    { 
    AutoMapper.Mapper.Map(model, this); 
    } 
} 

Il varie en pratique parfois , mais avoir un viewmodel distinct et concis offrira le plus de flexibilité.

+0

Je pense que votre réponse subjective pourrait être mieux formulée, «mieux pour moi» approche, mais je vois d'où vous venez. Cependant, je pense que cela nécessiterait un modèle T4 pour les classes de modèles de vues, afin d'atténuer la duplication généralisée du code. – ProfK

+0

Je ne suis pas d'accord avec la déclaration «mieux pour moi». Il y a beaucoup de questions similaires ici donnant cette même réponse comme une «meilleure pratique» et de nombreux programmeurs respectés dans le .NET MVC suivent les mêmes règles (http://codebetter.com/blogs/jeremy.miller/archive/2008/ 10/23/nos-opinions-sur-le-asp-net-mvc-introduisant-le-thunderdome-principe.aspx et http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/06/29/ how-we-do-mvc-view-models.aspx comme exemples). Vous avez demandé la meilleure approche en général, j'ai répondu avec ce que moi-même et beaucoup d'autres l'ont trouvé =) – TheRightChoyce

+0

Je ne vois aucune connexion dans le blog Miller avec ce que vous affirmez. Le blog de Bogard est un excellent moyen de réaliser ce que vous préconisez, mais ce n'est pas suffisant pour me convaincre que cette façon de procéder est effectivement meilleure. Merci pour la contribution cependant, le discours est sain. – ProfK