2013-02-05 3 views
6

Когда я произвожу мой контроллер и вид с ниже командамиподмостей использование шаблона cshtml

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

Он генерирует .aspx (веб-форма) страницы вместо .cshtml (бритвы)

Как я могу изменить это по умолчанию. Я думаю, что когда я впервые создал новый проект, он попросил меня выбрать механизм просмотра по умолчанию, и я выбрал неправильный (webforms).

Также есть бесплатные или дешевые T4-шаблоны для MVC 3, которые генерируют более удобные и функциональные виды. используя 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, cshtml и vbhtml просмотров и на основе этих чисел определяет, какой ракурс будет использоваться. Вот часть этой логики:

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

perfect, tha НКС – Daveo

Смежные вопросы