2013-02-05 60 views
6

當我產生我的控制器,並與下面的命令視圖腳手架模板使用CSHTML

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

它產生的.aspx(Web表單)的網頁,而不是.cshtml(剃刀)

我怎樣才能改變這種默認行爲。我想當我第一次創建一個新項目時,它要求我選擇默認視圖引擎,並選擇了錯誤的視圖引擎(webforms)。

也有任何免費或便宜的用於MVC 3的T4模板,可生成更好,更實用的視圖。即使用webgrid/jQUery等。

+0

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

回答

2

解決方案廣泛的腳手架配置存儲在scaffolding.config,它與解決方案文件位於同一個文件夾中。

在安裝階段MvcScaffolding包啓動init.ps腳本(您可以在<packages folder>\MvcScaffolding.<version>\tools目錄中找到它)。腳本計數aspx,cshtmlvbhtml視圖,並根據這些數字決定使用什麼視圖腳手架。這裏是一塊這種邏輯的:

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 

因此,你可以使用下面的命令切換視圖棚架:

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

或者可以手工編輯scaffolding.config文件和用於在標籤ScaffolderName屬性替換值:

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

完美,臨屋區NKS – Daveo