2014-02-21 197 views
8

我正在研究,我認爲是一個大的ASP.NET MVC網站。目前有近100個編輯器模板(全部用於1個控制器),並且這個數字將會增長。

我想要完成的是組織我的視圖,使他們更容易找到和版本。隨着時間的推移,這個'版本'步驟將會使觀點倍增。您可以將此項目視爲一個問題/答案應用程序,在該應用程序中創建了考試,並且可以在稍後提取。基本上,對於這個特定的項目,視圖/ EditorTemplates在生產中不能真正改變,因此必須創建新的副本供將來使用。舊觀點的參考依然存在,使得該考試的外觀和行爲與一年前相同。同樣,新的考試將自動提取視圖的新版本,並使用該版本。 我想要有這種類型的結構,但我渴望其他想法。ASP.NET MVC EditorTemplate子文件夾

Views/Shared/EditorTemplates/Common 
Views/Shared/EditorTemplates/Common/v2 
Views/Shared/EditorTemplates/Common/v3 
Views/Shared/EditorTemplates/Department 
Views/Shared/EditorTemplates/Department/v2 

注意:雖然我將有版本子目錄,這意味着我將有相同的模型和模板的多個版本,新的文件將具有一個唯一的文件名。另外,我也嘗試使用Razor Generator來編譯我的觀點。不確定是否可以擴展以添加額外的EditorTemplate搜索路徑。

+0

您可以添加您自己的視圖引擎,並自定義MVC發現視圖的方式和位置。 –

+0

我正在嘗試使用Razor Generator,它將視圖編譯爲單獨的程序集。我正在尋找一個解決方案(希望)讓我仍然可以使用它,也許可以延長這一點。 –

+0

我還沒有使用剃鬚刀發電機。 –

回答

14

該框架不會在那裏,而是使用本地EditorTemplate文件夾,例如, Views/Department/EditorTemplates

編輯器模板位於視圖引擎中,該視圖引擎首先在~/Views/{1}/{0}.cshtml之後查找,然後在~/Views/Shared/{0}.cshtml之間查找。

例如,如果該控制器是Department並且所述模型是String,框架請求EditorTemplates/String,並且視圖發動機看起來~/Views/Department/EditorTemplates/String.cshtml~/Views/Shared/EditorTemplates/String.cshtml

+0

什麼是「本地EditorTemplates」?如何註冊/定義路徑? –

+0

@ user3338892已更新的答案。 –

+0

我不確定這會對我有用。所有EditorTemplates都在同一個控制器下。 '部門'的例子是我分類我的觀點的一種方式,這是這篇文章的內容。 –