[MVC Toolkit] 依Web.sitemap 建立初始的Controller及View
需求源起
因為在開發啟動的iterator0時,常常架構師已經規劃好網站地圖及功能規格,
我習慣把要做的Code先作出來加入版本控制,再交由團隊去實作,
但要手動一個一個加 Controller 跟 View 實在太麻煩,所以順手寫了一個工具去快速建立程式。
實作想法
我最常用的是最基本的Route規則,
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
所以產出的資料檔案的構都用預設:
{Application Name}/Controllers/{Controller Name}Controller.cs
{Application Name}/Views/{Controller Name}/{Action Name}.cshtml
Web.sitemap 也僅支援3層, 如下:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap>
<siteMapNode url="/demosite" title="MVC範例系統" >
<siteMapNode url="/demosite/Profile" title="基本資料" />
<siteMapNode url="/demosite/About" title="關於">
<siteMapNode url="/demosite/About/CorpInfo" title="公司資訊"/>
<siteMapNode url="/demosite/About/ContactMe" title="連絡我"/>
</siteMapNode>
</siteMapNode>
</siteMap>
如果沒有訂義第3層則自動加入 Index Action
環境要求
- Windows 7+
- .NET Framework 4.0版+
使用方式
- 下載小工具
- 解壓縮
- 修改設定檔 MVCToolkit.exe.config
- 執行 MVCToolkit.exe
- 如果要選擇非設定檔定義之路徑, 可按下[開啟檔案] 變更
- 按下 [建立控制項]
- 檢視結果
設定檔說明
參數名稱 | 參數說明 |
SitemapPath |
指定web.sitemap的位置, 可用相對路徑.
如: .\DemoSite\Web.sitemap |
ApplicationName | 應用程式名稱, 亦為Code generate的目標路徑,
如: DemoSiteCodeGen 註: 因為工具是 Clear > CodeGen , 建議不要指定真正的應用程式名稱 , 而是 先建立到 template 資料夾後,再以 merge 工具加入。 |
ControllerNameSpace | 指定Controller 的 namespace |
BaseControllerName | 指定繼承的Controller名稱 |
AddAuthorize | 是否加入[Authorize]宣告 |
ps. 沒有做太多的錯誤處理, 也沒有保證不會出錯^^