2

我有一个 ASP.NET MVC 4 项目,其中包含许多要以自定义方式搭建的模型。我已经定制了模板来创建控制器并查看我想要的样子。这一切都很好。现在,我编写了一个 PowerShell 脚本来为每个需要搭建脚手架的模型一次生成控制器和几个视图。这也很好用。

然后我去寻找一个 PowerShell 脚本来在一个命令中构建多个模型,因为现在我必须为我拥有的每个模型手动运行脚本。我发现的第一件事是编写一个脚本,在每一行都使用命令来搭建模型,它工作得很好,但在我看来仍然是太多的工作。经过更深入的搜索后,我发现这可以通过一个脚本来完成,该脚本具有要构建的模型列表和一个遍历列表的 foreach 循环,然后为该列表中的每个项目执行支架命令。这好多了!

我现在唯一问自己的是:是否可以编写一些脚本来自动检测 Model 文件夹中的所有模型,将它们放入列表中,然后执行循环。我问这个的原因是因为我不只是几个模型,而是大约 250 个。并不是我不想手动执行此操作,而是如果添加、更改或删除某些模型怎么办.. .

所以我的问题是:有没有办法“动态”从模型文件夹中获取所有模型并将它们放入将被迭代的列表中?

更新:

这就是我的脚本“ScaffoldAll.ps1”现在的样子(并非所有 250 个模型都在列表中):

$models = "Team", "Player"

foreach($model in $models)
{
    Scaffold CustomController $model -Force
}

我想要实现的目标(伪!):

$models = //All files in Model folder, like: Get-Files "\Models"

这可能吗?

4

2 回答 2

2

阿巴斯,

我一直在使用 MVCScaffolding 模板(使用 EF 代码优先),其工作方式是您创建域模型,然后为所有具有域模型的对象搭建基架。这个模板实际上会跳过已经搭建好的任何预先存在的控制器/视图的脚手架。但是,如果您愿意,还有一个覆盖命令 (-FORCE) 将覆盖任何/所有预先存在的脚手架代码。

这是快速链接:

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

于 2012-02-09T09:52:49.523 回答
0

@jim:你没有提供直接的答案(我没有要求),但你确实让我上路了,我非常感谢你。我查看了模板并通过研究这些,找到了从模型文件夹中获取模型的解决方案。它可能不是完美的解决方案,但这很有效:

$modelFolder = Get-ProjectFolder "Models\"
foreach($file in $modelFolder)
{
    $model = $file.Name.Replace(".cs", "")
    Scaffold CustomController $model -Force
}
于 2012-02-09T11:16:45.593 回答