[MVC Toolkit] 依Web.sitemap 建立初始的Controller及View

[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

 

環境要求

  1. Windows 7+
  2. .NET Framework 4.0版+

 

使用方式

  1. 下載小工具
  2. 解壓縮
  3. 修改設定檔 MVCToolkit.exe.config
  4. 執行 MVCToolkit.exe
  5. 如果要選擇非設定檔定義之路徑, 可按下[開啟檔案] 變更
  6. 按下 [建立控制項]
  7. 檢視結果

設定檔說明

參數名稱 參數說明

SitemapPath

指定web.sitemap的位置, 可用相對路徑.
如: .\DemoSite\Web.sitemap
ApplicationName 應用程式名稱, 亦為Code generate的目標路徑,
如: DemoSiteCodeGen
註: 因為工具是 Clear > CodeGen , 建議不要指定真正的應用程式名稱 , 而是 先建立到 template 資料夾後,再以 merge 工具加入。
ControllerNameSpace 指定Controller 的 namespace
BaseControllerName 指定繼承的Controller名稱
AddAuthorize 是否加入[Authorize]宣告

ps. 沒有做太多的錯誤處理, 也沒有保證不會出錯^^