如何在多個 Asp.net MVC 應用程序中使用通用佈局和样式
我有一個視覺工作室解決方案,其中包含多個具有相同外觀和感覺的 Telerik MVC4 剃須刀項目。我不想在所有 MVC4 項目中複製相同的佈局、CSS/樣式、圖像和 js 文件。實現這種可重用性的最佳方法是什麼?我嘗試創建一個 commonUI 項目的虛擬目錄,並嘗試在 _ViewStart.cshtml 中使用http://localhost/ … 引用 _layout.cshtml 但它抱怨說“http:/localhost/MyMvcApp/Views/Shared/_Layout.cshtml ’ 不是有效的虛擬路徑。”
請幫忙!
四個建議:
1)查看區域,也許不是有單獨的項目,這些是同一系統的不同組件(管理員等)?
2)使用在visual studio中添加現有項目並通過連結添加項目。這仍然會複製它們以進行部署,但您可以保留一個源。
3)考慮通過建構自己的nuget包來做到這一點。這樣,雖然您將複製 CSS 和圖像,但您可以將其打包並根據需要更新包。好處是您可以更新一個項目,而不必重新測試另一個項目(如果它們是分開的並且 1)不適用)。
4)我發現這個比其他的更醜,但是在 IIS 中我相信你可以映射到文件夾中,所以你可以通過項目中的連結來引用這些文件,而不是在那裡部署它們,然後在部署時映射到適當的文件夾中使用單一來源路徑。
我知道沒有辦法分享應用程序路徑。
編輯:
我以前從未嘗試過,因此無法保證它可以正常工作,但可能會在單獨的項目中編譯您的共享項目,然後在所有其他項目中引用該 DLL。
我找到的參考是這個,但我還沒有確認這是否有效,只是認為這可能是一條可行的探索途徑:
http://www.chrisvandesteeg.nl/2010/11/22/embedding-pre-compiled-razor-views-in-your-dll/