這是我想要實現的,我想將ASP.NET MVC的AREA作爲單純的DLL來分開。如何創建ASP.NET MVC區域作爲插件DLL?
- Blog.DLL
- Forums.DLL
- FAQ.DLL
他們每個人都是個體ASP.NET MVC區,擁有自己的默認CSHTML或ASPX頁面。安裝,遷移和維護大量頁面,包括資源,javascript等等,對於長期運行來說都是真正的痛苦。由於其中大部分將很難改變。
我的最終網站會是這樣的。
\MvcApplication
\bin
\MvcApplication.bin
\Blog.dll
\Forums.dll
\Controllers
\..
\Models
\..
\Views
\..
\Global.asax
\Web.config
沒有添加任何東西,只是刪除Blog.dll,我的應用程序應該支持/博客及其所有頁面。如果我想自定義的東西,比我可以添加區,和只添加CSHTML頁..
\MvcApplication
\bin
\MvcApplication.bin
\Blog.dll
\Forums.dll
\Areas
\Blog
\Views
\Shared
\BlogLayout.cshtml <-- this will override the look
\Controllers
\..
\Models
\..
\Views
\..
\Global.asax
\Web.config
這將重用ASP.NET區插件,通過簡單地丟棄在bin文件夾中的DLL幫助。然而,web.config可能需要一些更改,但很可能我們會將配置值保存在數據庫中,並且只需要web.config中的「實體框架連接字符串」。
我的挑戰(問題)
- 這可能嗎?它確實在我看來,但會有任何反射/許可問題?
- 如何在一個DLL中包含cshtml/aspx視圖?可能編譯版本?我已經在codeplex上看到了一些基於文本模板的視圖引擎,但是我對如何實際使用它們感到困惑。
- 如何讓ViewEngine首先檢查物理目錄文件是否存在,然後查看dll本身中的cshtml/aspx作爲資源文件?
aspx文件怎麼樣?大多數情況下我們只使用cshtml,但是對於打印PDF,cshtml不能用於未知的html標籤,所以我們有時使用aspx。 – 2012-07-14 10:54:38
我不知道ASPX。我停止使用它已經很長時間了。也許虛擬路徑提供者可能會被改編。 – 2012-07-14 11:17:37
您可以使用可直接從Nuget安裝的EmbeddedResourceVirtualPathProvider。它適用於資產文件。 https://github.com/mcintyre321/EmbeddedResourceVirtualPathProvider#readme – mcintyre321 2013-04-06 16:10:22