2013-04-16 3 views
6

Je vais potentiellement avoir de nombreuses vues partielles pour mon application qui peuvent être regroupées dans une structure de dossiers. Il semble que je devrais faire cela sinon je vais voir un dossier avec des tas de fichiers. Donc, je suppose que je devrais avoir quelque chose comme:Quelle est la meilleure façon d'organiser les vues partielles dans une structure de fichiers?

Views -> 
    Group1 -> 
    PartialView1 
    PartialView2 

À quoi ressemblerait l'appel HTML.Partial?

HTML.Partial("~/Views/Group1/MyPartialView.cshtml",Model) 

Une autre idée que je devais était d'avoir un seul fichier Vue partielle avec conditionals blocs de code, mais je soupçonne que cela va à l'encontre de tout ce qui PartialViews sont à peu près.

Enfin, y a-t-il une différence de performance si on a beaucoup de petites vues partielles contre une grande vue partielle avec plusieurs composants conditionnels? Je pense que je pense qu'un fichier charger dans la mémoire et la compilation au code par opposition à de multiples petites charges de fichiers.

Merci.

EDIT: Informations supplémentaires.

J'ai un contrôleur générique que j'utilise pour rendre différentes parties d'un rapport, donc toutes les sections pour un chapitre "introduction" seraient rendues en utilisant "Introduction" partials ie "Introduction.Section1", "Introduction.Section2" . Dans mon scénario, je ne crois pas avoir des sections communes entre les chapitres, donc je pourrais aller avec le «fichier». idée, mais le dossier Views serait grand, d'où la raison pour laquelle je considère l'utilisation des sous-dossiers.

EDIT: Merci à tous. Quelques idées formidables ici. Je suis allé avec l'idée de dossier à la fin puisque j'utilise cette approche ailleurs. Cependant, je réalise que je dois utiliser un chemin absolu, mais ce n'est pas un problème.

+1

Avez-vous envisagé d'utiliser des modèles éditeur/affichage par type de modèle réel? Il vous permet de lier une vue à un type de modèle à l'échelle du système sans avoir à indiquer manuellement les noms des vues partielles. (http://stackoverflow.com/a/5497234/1373170) –

Répondre

3

Tant qu'ils sont dans le répertoire Views quelque part, cela ne devrait pas vraiment d'importance. Si vous le placez dans un emplacement autre que Views/{controller} ou Views/Shared, vous aurez besoin de l'emplacement complet, y compris Views et l'extension, donc @Html.Partial("~/Views/Group1/PartialView1.cshtml"). Personnellement, si vous avez beaucoup de partiels qui sont utilisés dans un seul contrôleur, je les laisserais dans le répertoire {controller-name} (avec un trait de soulignement comme suggéré par @IyaTaisho).Mais s'ils sont utilisés par plusieurs contrôleurs et que vous devez les regrouper, je les regrouperais sous Views/Shared/{groupName}.

En ce qui concerne un grand parti contre beaucoup de petits partiels, je dirais aller avec beaucoup de petits. Il pourrait y avoir une raison d'en faire un gros de temps en temps, mais en général, je crois qu'un partiel devrait être aussi simple que possible. Rappelez-vous que vous pouvez toujours avoir des partiels imbriqués, donc si vous avez partagé la fonctionnalité ou la disposition parmi de nombreux partiels, vous pouvez le diviser en partiels parents et beaucoup de partiels enfants en dessous.

+0

Merci pour ça. En fait, j'ai un contrôleur générique que j'utilise pour rendre différentes parties d'un rapport, donc toutes les sections pour un chapitre "introduction" seraient rendues en utilisant "Introduction" partials ie "Introduction.Section1", "Introduction.Section2". Dans mon scénario, je ne crois pas avoir des sections communes entre les chapitres, donc je pourrais aller avec le «fichier». idée, mais le dossier Views serait grand, d'où la raison pour laquelle je considère l'utilisation des sous-dossiers. – SamJolly

5

Vous pouvez utiliser une convention de nommage des fichiers parent-enfant comme:

header.html 
header.login.html 
header.searchbar.html 

Vous pouvez même prendre un peu plus loin:

contact.helpdesk.html 
contact.office.html 

réutilisant Partials est beaucoup moins fréquent que partials uniques, donc vous pouvez utiliser une convention pour les partiels réutilisables comme:

global.partial1.html 
global.partial2.html 
  • Les limitations sont un répertoire de fichiers volumineux. Les Benifits sont faciles à écrémer, faciles à trier.

+0

Idée intéressante. En termes de MVC3, pensez-vous qu'il est préférable d'avoir des dossiers dans le même but, à savoir Header \ header.html, Header \ Login.html, Header \ SearchBar.html – SamJolly

+0

+1 J'aime cette approche, at-il des inconvénients? –

+1

@SamJolly Vous pourriez perdre la tête. De plus, le parent dans ce cas n'est pas un dossier mais le fichier lui-même. Le partiel au parent qui est. –

5

J'ai l'habitude d'ajouter un _ devant un partiel. Exemple aurait une vue principale appelée Home.cshtml. Les pièces (partials) sur la page auraient quelque chose comme ceci: _header.cshtml, _footer.cshtml, etc.

+0

Merci pour ça. Oui au courant de l'approche "_" Le problème n'est pas de distinguer les partiels, mais comment organiser le grand nombre de partiels différents. – SamJolly

+0

Ah, je vois. J'ai un problème similaire. J'ai hérité d'une quantité massive d'entre eux dans mon projet actuel. Pour l'instant, je l'ai laissé tel quel parce que c'était plus facile à gérer (mélange de partiels et de vues). Je suggère presque de faire un dossier pour eux mais en même temps je ne suis pas sûr. Désolé je ne peux pas être plus d'aide que cela. – IyaTaisho

Questions connexes