2013-02-05 25 views
6

Kiedy generowania mój kontroler i widoki z polecenia poniżejrusztowanie użycie szablonu cshtml

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

Generuje aspx (formularz) Strony WWW zamiast .cshtml (brzytwa)

Jak mogę zmienić to domyślne zachowanie. Myślę, że kiedy po raz pierwszy stworzyłem nowy projekt, poprosiłem mnie o wybranie domyślnego mechanizmu wyświetlania i wybrałem niewłaściwy (formularze internetowe).

Dostępne są również darmowe lub tanie szablony T4 dla MVC 3, które generują ładniejsze i bardziej funkcjonalne widoki. np. przy użyciu webgrid/jquery itp.

+0

Być może zapytaj: http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-tvcscaffolding-package/ –

Odpowiedz

2

Konfiguracja konfiguracji szerokiego rusztowania jest przechowywana w scaffolding.config, która znajduje się w tym samym folderze z plikiem rozwiązania.

Na etapie instalacji pakiet MvcScaffolding uruchamia skrypt init.ps (można go znaleźć w katalogu <packages folder>\MvcScaffolding.<version>\tools). Skrypt liczy aspx, cshtml i vbhtml widoków i na podstawie tych liczb decyduje, jaki widok będzie używany. Oto fragment tej logiki:

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 

Więc można przełączyć widok scaffolder stosując następujące polecenia:

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

Lub można ręcznie edytować scaffolding.config plik i zastąpić wartość ScaffolderName atrybutu w tagu:

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

perfect, tha nks – Daveo