2013-02-05 11 views
6

Quando genero mio controller e opinioni con il seguente comandoimpalcatura Usa modello cshtml

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

Esso genera aspx (web form) pagine invece di .cshtml (rasoio)

Come posso cambiare questa comportamento predefinito. Penso che quando ho creato un nuovo progetto mi è stato chiesto di selezionare il motore di visualizzazione predefinito e ho scelto quello sbagliato (webforms).

Inoltre ci sono modelli T4 gratuiti o economici per MVC 3 che generano viste più belle e più funzionali. utilizzo di webgrid/jquery ecc.

+0

Forse chiedere: http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/ –

risposta

2

La configurazione di scaffalature larghe soluzione è memorizzata in scaffolding.config che si trova nella stessa cartella con il file di soluzione.

Nella fase di installazione MvcScaffolding il pacchetto avvia lo script init.ps (è possibile trovarlo nella directory <packages folder>\MvcScaffolding.<version>\tools). Script conta aspx, cshtml e vbhtml visualizzazioni e in base a questi numeri decide quale ponteggio vista verrà utilizzato. Ecco un pezzo di questa logica:

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 

in modo da poter cambiare la visualizzazione scaffolder utilizzando i seguenti comandi:

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

oppure è possibile modificare manualmente scaffolding.config di file e sostituire il valore per ScaffolderName attributo nel tag:

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

perfetto, tha NKS – Daveo

Problemi correlati