2013-02-05 4 views
6

Quand je produis mon contrôleur et des vues avec la commande ci-dessousutilisation du modèle échafaudage cshtml

scaffold controller <Entity> -force -repository -DbContextType "XXX" -Area YYY 

Il génère .aspx (formulaire web) pages au lieu de .cshtml (rasoir)

Comment puis-je changer cette comportement par défaut. Je pense que lorsque j'ai créé un nouveau projet, il m'a demandé de sélectionner le moteur de vue par défaut et j'ai choisi le mauvais (webforms).

Existe-t-il des modèles T4 gratuits ou bon marché pour MVC 3 qui génèrent des vues plus agréables et fonctionnelles. i.e à l'aide de webgrid/jQuery, etc.

+0

Peut-être demander: http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/ –

Répondre

2

La configuration de solutions d'échafaudage large est stockée dans scaffolding.config qui se trouve dans le même dossier que le fichier de solution.

Lors de l'installation, le package MvcScaffolding lance le script init.ps (vous pouvez le trouver dans le répertoire <packages folder>\MvcScaffolding.<version>\tools). Script compte aspx, cshtml et vbhtml vues et sur la base de ces chiffres décide quelle vue scaffolder sera utilisé. Voici un morceau de cette logique:

function InferPreferredViewEngine() { 
    # Assume you want Razor except if you already have some ASPX views and no Razor ones 
    if ((CountSolutionFilesByExtension aspx) -eq 0) { return "razor" } 
    if (((CountSolutionFilesByExtension cshtml) -gt 0) -or ((CountSolutionFilesByExtension vbhtml) -gt 0)) { return "razor" } 
    return "aspx" 
} 

# Infer which view engine you're using based on the files in your project 
$viewScaffolder = if ([string](InferPreferredViewEngine) -eq 'aspx') { "MvcScaffolding.AspxView" } else { "MvcScaffolding.RazorView" } 
Set-DefaultScaffolder -Name View -Scaffolder $viewScaffolder -SolutionWide -DoNotOverwriteExistingSetting 

Vous pouvez donc passer vue scaffolder en utilisant les commandes suivantes:

Set-DefaultScaffolder -Name View -Scaffolder "MvcScaffolding.RazorView" -SolutionWide 
Set-DefaultScaffolder -Name View -Scaffolder "MvcScaffolding.AspxView" -SolutionWide 

Ou vous pouvez modifier manuellement le fichier scaffolding.config et remplacez la valeur pour ScaffolderName attribut dans la balise:

<Default DefaultName="View" ScaffolderName="put here either MvcScaffolding.RazorView or MvcScaffolding.AspxView" /> 
+0

parfait, tha nks – Daveo

Questions connexes