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" 

這可能嗎?

回答

2

阿巴斯,

我一直在使用MVCScaffolding模板(使用EF代碼優先)和這個作品是你創建的域模型(一個或多個),然後腳手架有一個域中的所有對象的方式模型。這個模板實際上會跳過任何已有的腳手架控制器/視圖的腳手架。然而,如果你願意的話,還有一個覆蓋命令(-FORCE),它將覆蓋任何/所有的現存腳手架代碼。

這裏的快速鏈接:

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

+0

我不太確定這是我的意思。請檢查我的問題中的更新部分。 – Abbas 2012-02-09 10:21:22

+1

阿巴斯 - 我的鏈接是讓你回顧一下在mvcscaffolding模板中它是如何完成的,以便將它重構爲你自己的代碼。希望它可以幫助:) – 2012-02-09 10:28:24

+1

檢查我的答案爲我找到的解決方案:) – Abbas 2012-02-09 11:17:23

0

@jim:您沒有提供一個直接的答案(我沒有要求),但你一定讓我上,我非常感謝你的方式許多。我開始研究這些模板,並通過研究這些內容,找到了從Model文件夾中獲取模型的解決方案。它可能不是完美的解決方案,但這完美的作品:

$modelFolder = Get-ProjectFolder "Models\" 
foreach($file in $modelFolder) 
{ 
    $model = $file.Name.Replace(".cs", "") 
    Scaffold CustomController $model -Force 
} 
+0

希望你喜歡mvctemplates,我真的從解構那些工作流程中學到了很多東西 – 2012-02-09 11:28:32