脚手架模板使用cshtml

Dav*_*veo 6 t4 scaffolding asp.net-mvc-3

当我使用以下命令生成我的控制器和视图时

scaffold controller <Entity> -force -repository -DbContextType "XXX" -Area YYY
Run Code Online (Sandbox Code Playgroud)

它生成.aspx(Web表单)页面而不是.cshtml(razor)

如何更改此默认行为.我想当我第一次创建一个新项目时,它要求我选择默认的视图引擎,我选错了(webforms).

还有任何免费或廉价的MV4 3 T4模板,可以生成更好,更实用的视图.即使用webgrid/jquery等.

Ale*_*kiy 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
Run Code Online (Sandbox Code Playgroud)

因此,您可以使用以下命令切换视图脚手架:

Set-DefaultScaffolder -Name View -Scaffolder "MvcScaffolding.RazorView" -SolutionWide
Set-DefaultScaffolder -Name View -Scaffolder "MvcScaffolding.AspxView" -SolutionWide
Run Code Online (Sandbox Code Playgroud)

或者您可以手动编辑scaffolding.config文件并替换ScaffolderName标签中属性的值:

<Default DefaultName="View" ScaffolderName="put here either MvcScaffolding.RazorView or MvcScaffolding.AspxView" />
Run Code Online (Sandbox Code Playgroud)