【问题标题】:scaffold template use cshtml脚手架模板使用cshtml
【发布时间】:2013-02-05 10:42:02
【问题描述】:

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

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

它生成 .aspx(网页表单)页面而不是 .cshtml(剃须刀)

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

还有任何用于 MVC 3 的免费或便宜的 T4 模板可以生成更好、更实用的视图。即使用 webgrid / jQUery 等。

【问题讨论】:

标签: asp.net-mvc-3 t4 scaffolding


【解决方案1】:

解决方案范围的脚手架配置存储在scaffolding.config 中,与解决方案文件位于同一文件夹中。

在安装阶段MvcScaffolding 包启动init.ps 脚本(您可以在&lt;packages folder&gt;\MvcScaffolding.&lt;version&gt;\tools 目录中找到它)。脚本计数aspxcshtmlvbhtml 视图,并根据这些数字决定将使用哪个视图脚手架。这是这个逻辑的一部分:

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" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 2013-01-31
    • 2016-11-06
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多