在ASP.NET MVC裡每個Controller可以有好幾個Action, 而每個Action的結果很可能就是View。其中負責View喧染動作的就是View Engine。我們先來看整個View Result執行過程

由上圖可知道View會選擇預設的View路徑,若沒找到第二個預設的View的路徑直到找到為止。
當整個專案架構要調整。View路徑位址因此要調整到符合專案的新路徑,此時就需要Custom View Engine。本篇會介紹如何調整View預設路徑在ASP.NET MVC和ASP.NET CORE
ASP.NET CORE

在StartUp.cs裡的ConfigureServices方法裡加上上述這段程式碼。記得在AddRazorOptions裡要用Insert而不要用Add。Insert會加在預設View路徑之前,而Add會加在預設View路徑之後。


在Theme資料夾產出cshtml檔,接者按執行頁面就應會優先產出在Theme資料夾底下的cshtml檔了。
執行畫面為

ASP.NET MVC

建立你的Custom View Engine類別。若選擇新的View為Razor類型,你的新view engine class繼承RazorViewEngine。

接者在Global.asax裡,如ASP.NET CORE加上View Engine這行程式碼。

適當使用Custom View Engine可幫我們客製化整個專案的架構。學習Custom View Engine並不算難。ASP.NET MVC整個架構也有許多可以客製化的地方,有助於達到整個團隊要的應用目的。