这是我想要实现的,我想将 ASP.NET MVC 的区域分离为纯单个 DLL。
- 博客.DLL
- 论坛.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,我的应用程序就应该支持 /blog 及其所有页面。如果我想定制一些东西,我可以添加区域,并且只添加 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 区域插件,只需将 dll 放到 bin 文件夹中即可。但是 web.config 可能需要一些更改,但很可能我们会将配置值保存在数据库中,并且只需要 web.config 中的“实体框架连接字符串”。
我的挑战(问题)
- 是否可以?它在我看来确实如此,但会有任何反射/许可问题吗?
- 如何在一个 DLL 中包含 cshtml/aspx 视图?可能是编译版本?我在 codeplex 上看到了几个基于文本模板的视图引擎,但我对如何实际使用它们有点困惑。
- 以及如何让 ViewEngine 首先检查物理目录文件是否存在,然后将 dll 本身中的 cshtml/aspx 视为资源文件?