2011-01-14 3 views
35

ASP.NET MVC offre la possibilité de sélectionner un 'modèle d'échafaudage' sur lequel une nouvelle vue sera basée (Ajouter une vue> Créer une vue fortement typée> Modèle d'échafaudage).Comment créer mon propre modèle d'échafaudage dans ASP.NET MVC 3?

Est-il possible de créer votre propre modèle d'échafaudage? Et si oui, comment?

+2

Bien sûr, depuis sa sortie, le nombre de personnes pouvant répondre à cette question est limité à peu près à Scott Guthrie et Phil Haack. – Will

+1

ou @Darin Dimitrov;) – jfar

+0

C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Web \ MVC 3 \ CodeTemplates \ AddController – davethecoder

Répondre

33

ASP.NET MVC utilise des modèles T4. Here's an overview.

Voici les étapes:

  1. Dans le type Console Package Manager: install-package mvc3codetemplatescsharp
  2. Accepter tous les avertissements
  3. Le dossier CodeTemplates sera ajouté à votre projet contenant les modèles

De là, vous pouvez modifier les modèles existants ou en ajouter un nouveau.

Ou si vous souhaitez les modifier globalement, vous pouvez le faire dans le dossier C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 3\CodeTemplates\.

+0

Relié/conséquence de l'installation sur un projet MVC4 avec VS2012: http://stackoverflow.com/questions/6320883/what-is-and-where-can-i-find-mvctexttemplatehost –

11

Vous pouvez utiliser T4 sans nuget bien sûr: Placez un dossier à la racine du site Web de l'application (le projet contenant les vues). La structure du répertoire est important, il devrait être

\ CodeTemplates \ AddView \ AspxCsharp \ MyTemplate.tt

Vous pouvez copier le contenu d'un des modèles existants situés dans C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Web \ MVC 3 \ CodeTemplates \

Ensuite, effacez la propriété du fichier TT nommé "Outil personnalisé". Cela devrait être vide. Ensuite, cliquez avec le bouton droit de la souris sur une Action du Contrôleur et dites "Ajouter Vue" ou, comme les contrôleurs sont dans un projet séparé dans notre cas, faites un clic droit sur le dossier View et cliquez sur "Add View".

Dans la liste déroulante Cliquez sur « Créer une vue fortement typé » puis entrez le type à utiliser sous la rubrique « Voir classe de données: » menu déroulant

Enfin, dans le « Affichage du contenu », sélectionnez « MyTempate ». Cela devrait apparaître si vous avez entré les dossiers correctement.

2

Ou, pour Visual Web Developer Express sur un 32 système-bit, un autre emplacement pour ces fichiers est C: \ Program Files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ VWDExpress \ ItemTemplates \ CSharp \ Web \ MVC 3 \ CodeTemplates

4

Dans Visual Studio 2012 avec MVC 4, le moyen facile (installer Paquet Nuget) vous donne une configuration incomplète, car le paquet Nuget est terriblement obsolète (dernière mise à jour en 2011 - peut-être le jour où il a été créé).

Vous devez utiliser l'équivalent de la réponse de Francis Shanahan, mais le chemin de copier choses est (64 bits):

C: \ Program Files (x86) \ Microsoft Visual Studio \ 11.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Web \ MVC 4 \ CodeTemplates

vous:

  1. Ajouter une référence à Microsoft.Web.Infrastructure, que vous pouvez trouver dans les assemblées> Extensions.

  2. Copier ce CodeTemplates dossier (y compris le dossier lui-même) à la racine de votre projet et de l'inclure dans le projet

  3. Ignorer les erreurs du compilateur pour l'instant (comme ne peut pas trouver MvcTextTemplateHost)

  4. Parcourez les propriétés de chacun des fichiers ajoutés et supprimez le texte dans la propriété "Outil personnalisé" de chacun. Lorsque vous ne l'étendre flèche à côté de chaque fichier disparaîtra (car le fichier ne sera plus généré en place)

  5. Enregistrer tout et construire - les erreurs du compilateur disparu

Si les erreurs du compilateur don Ne partez pas - surtout si vous voyez une erreur dans un fichier .cs généré Visual Studio ne peut pas trouver, et un fichier .tt - fermez Visual Studio, effacez votre dossier temporaire, et rouvrez la solution. Dans un cas, je suis allé jusqu'à redémarrer avant que le problème ne se clarifie. Il a été provoqué par un fichier .cs généré à partir d'un modèle .tt que Visual Studio essayait toujours de générer automatiquement le code pour.

En outre, les noms des fichiers .tt sont un peu confus - voici comment carte:

GUI:

contrôleur vide MVC
contrôleur MVC avec lecture/écriture des actions et des vues, en utilisant le contrôleur MVC Entity Framework
avec lecture vide/écriture actions
contrôleur API vide
contrôleur API avec lecture/écriture des actions, en utilisant Entity Framework
contrôleur API avec lecture vide/écriture actions

CodeTemplates \ fichiers de addController carte respectivement:

Controller.tt
ControllerWithContext.tt
Controller.tt
ApiController.tt
ApiControllerWithContext.tt
ApiController.tt

Il y a un if déclaration dans Controller.tt et ApiController.tt qui gère la fonctionnalité avec/sans les actions de lecture/écriture. Pour les vues, le nommage est intuitif sauf que List.tt crée Index.cshtml et Empty.tt est utilisé pour toutes les vues en plus de Créer/Supprimer/Détails/Éditer/Index.

This question covers what properties you can use in the .tt templates.

Les modèles .tt sont des modèles Microsoft T4. T4 Template Syntax.