由於多人開發上要要求每個人在某某功能的版面時要按照怎樣的結構來刻 HTML 有難度
加上之前跟某位朋友聊天時提到他們家有使用 Scaffold Templates
故想說.... 與其一直宣導該怎樣寫,不如讓大家預設拿到的就是結構已經長好的頁面
ASP.NET MVC 預設的 Scaffold Templates 路徑是在
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Web\Mvc\Scaffolding\Templates
當中 (Visual Studio 版本不同路徑版號會不一樣)
在自己的專案中開一個叫做 CodeTemplates 的目錄,然後把 Templates 目錄下的整個結構長到自己的專案中
(畢竟要每個開發人員去動自己電腦的這個目錄也是挺.... 困難的)
然後 View 的幾個目錄裡面的
Imports.include.t4
ModelMetadataFunctions.cs.include.t4
也塞過來一下 (這兩個太好用了)
整個結構大概像這樣
這部份只有長我專案需要的結構,沒有設定的範本會抓預設路徑內的範本使用
諸如像 MvcArea 或是 ApiController 等如果有需要額外定義也是可以拉進來寫
不知道怎麼開始寫 Scaffold Templates 可以先拿原本目錄裡面的 t4 檔來參考一下
不過自己剛開始點開時會有點痛苦,因為沒有程式碼上色也沒有提示可以用
這邊推薦 Devart T4 Editor for Visual Studio 這個套件,可以在編輯時給你上述原本沒有的兩個功能
然後就可以開始修改自己的範本了
controller 的部份像我自己的專案有額外再墊一層處理其他的工作
所以在專案範本部分 Controller 就改為繼承自自己定義的 Controller
內容大致如下
緊接著是 View 的範本
View 分別放在兩個目錄中,分別是 MvcView 跟 MvcViewWithoutModel
顧名思義就是一個要吃 Model,一個不用~
跟 Controller 不一樣的是,View 這邊的 t4 檔可以隨意新增自己要的名稱
譬如我就新增了專案比較常用到的 QueryForm.t4 以及 InputForm.t4
以及在 MvcViewWithoutModel 的目錄當中增加了 Grid.t4
在 MvcVIew 當中比較可惜的是由於 Imports.include.t4 所定義的 ModelMetadata 型態是
Microsoft.AspNet.Scaffolding.Core.Metadata.ModelMetadata
就不能再去處理 Model 內 property 的 attributes ,像是對應必填欄位要長 required 的 css 等,這就得靠 Programmer 去補了
至於這個寫好的範本怎麼用? 照原本新增檔案的方式就好~~
增加好 Scaffold Templates 之後新增好 Controller 後就會看到預設的繼承不再是 Controller 而是 MyBaseController
預設的 using 也多增加了 My.Product.Core; 這行
View 範本的部份一樣是 右鍵 -> Add -> View
差別在於 Template 的下拉選單中可以看到額外在專案中定義的 View Scaffold Template 了
以上,都搞定之後Programmer 就可以過著幸福快樂的日子了
ref:
https://www.credera.com/blog/technology-insights/microsoft-solutions/create-custom-scaffold-templates-asp-net-mvc/
http://weblogs.asp.net/imranbaloch/customizing-the-asp-net-mvc-5-web-api-2-scaffolding-templates
在自己的專案中開一個叫做 CodeTemplates 的目錄,然後把 Templates 目錄下的整個結構長到自己的專案中
(畢竟要每個開發人員去動自己電腦的這個目錄也是挺.... 困難的)
然後 View 的幾個目錄裡面的
Imports.include.t4
ModelMetadataFunctions.cs.include.t4
也塞過來一下 (這兩個太好用了)
整個結構大概像這樣
這部份只有長我專案需要的結構,沒有設定的範本會抓預設路徑內的範本使用
諸如像 MvcArea 或是 ApiController 等如果有需要額外定義也是可以拉進來寫
不知道怎麼開始寫 Scaffold Templates 可以先拿原本目錄裡面的 t4 檔來參考一下
不過自己剛開始點開時會有點痛苦,因為沒有程式碼上色也沒有提示可以用
這邊推薦 Devart T4 Editor for Visual Studio 這個套件,可以在編輯時給你上述原本沒有的兩個功能
然後就可以開始修改自己的範本了
controller 的部份像我自己的專案有額外再墊一層處理其他的工作
所以在專案範本部分 Controller 就改為繼承自自己定義的 Controller
內容大致如下
<#@ template language="C#" HostSpecific="True" #>
<#@ output extension="cs" #>
<#@ parameter type="System.String" name="ControllerName" #>
<#@ parameter type="System.String" name="ControllerRootName" #>
<#@ parameter type="System.String" name="Namespace" #>
<#@ parameter type="System.String" name="AreaName" #>
<#
string routePrefix;
if (String.IsNullOrEmpty(AreaName))
{
routePrefix = ControllerRootName;
}
else
{
routePrefix = AreaName + "/" + ControllerRootName;
}
#>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using My.Product.Core;
namespace <#= Namespace #>
{
public class <#= ControllerName #> : MyBaseController
{
// GET: <#= routePrefix #>
public ActionResult Index()
{
return View();
}
}
}
緊接著是 View 的範本
View 分別放在兩個目錄中,分別是 MvcView 跟 MvcViewWithoutModel
顧名思義就是一個要吃 Model,一個不用~
跟 Controller 不一樣的是,View 這邊的 t4 檔可以隨意新增自己要的名稱
譬如我就新增了專案比較常用到的 QueryForm.t4 以及 InputForm.t4
以及在 MvcViewWithoutModel 的目錄當中增加了 Grid.t4
在 MvcVIew 當中比較可惜的是由於 Imports.include.t4 所定義的 ModelMetadata 型態是
Microsoft.AspNet.Scaffolding.Core.Metadata.ModelMetadata
就不能再去處理 Model 內 property 的 attributes ,像是對應必填欄位要長 required 的 css 等,這就得靠 Programmer 去補了
至於這個寫好的範本怎麼用? 照原本新增檔案的方式就好~~
增加好 Scaffold Templates 之後新增好 Controller 後就會看到預設的繼承不再是 Controller 而是 MyBaseController
預設的 using 也多增加了 My.Product.Core; 這行
View 範本的部份一樣是 右鍵 -> Add -> View
差別在於 Template 的下拉選單中可以看到額外在專案中定義的 View Scaffold Template 了
ref:
https://www.credera.com/blog/technology-insights/microsoft-solutions/create-custom-scaffold-templates-asp-net-mvc/
http://weblogs.asp.net/imranbaloch/customizing-the-asp-net-mvc-5-web-api-2-scaffolding-templates
沒有留言:
張貼留言