2009-03-04 23 views
6

J'ai imbriqué mes classes viewdata dans mes contrôleurs et, à mesure que leur nombre augmente, je commence à me demander si c'est une bonne idée. Là encore, quelque chose à propos de la pollution des répertoires/Views et/Controllers avec ces choses semble off.Où devrais-je mettre mes données d'affichage fortement typées asp.net-mvc?

Y a-t-il une convention qui me manque ici? Peut-être un répertoire/ViewData? idk, quels sont les bons emplacements pour mes classes de viewdata?

Répondre

0

J'ai fait exactement ce que vous suggérez, j'ai mes viewdata fortement typés vivant dans/ViewData. J'ai pensé à le mettre dans le répertoire \ Model mais je n'aime pas que mes projets aient trop de répertoires imbriqués. le \ ViewData est aussi ce que fait Kigg.

0

Je mets mes classes de données vue dans un projet dédié à cela. Ils sont des DTO, et les mettre dans leur propre projet impose qu'ils ne dépendent de rien d'autre dans les couches architecturales. Les utiliser comme DTO pour fournir des vues n'est qu'une façon de les utiliser. Je pourrais les envoyer par la poste quelque temps, à l'intérieur d'un message sur un autobus de service ou quoi que ce soit.

3

Je ne connais pas de convention. Je viens de mettre le mien sous /Model/ViewModel/BlahViewModel.cs, etc. Je ne voudrais pas les mettre dans un projet séparé jusqu'à ce qu'il y avait un besoin spécifique pour cela. Il ne serait pas difficile de les déplacer plus tard si nécessaire.

0

puisque vous utilisez MVC et la structure des dossiers devrait représenter la structure de l'espace de noms de votre code Je recommande pour chacun de vos domaines d'objets que vous devez regrouper vos contrôleurs, modèles et services dans des dossiers séparés

nous utiliserions

  • DomainName

     Controllers 
        Model 
        Services 
    
+0

droit, mais où voudriez-vous mettre les classes viewdata? Les contrôleurs et les vues dépendent d'eux. –

+0

Dans le dossier du modèle, vous souhaiterez passer le modèle à la vue depuis le contrôleur. MvcContrib a quelques excellentes extensions pour vous permettre de passer des modèles de données dans les données de vue telles que ViewData.Add (modelInstance) et ViewData.Get () – Richard