这是我想要实现的,我想将ASP.NET MVC的AREAs分离为纯单个DLL.
> Blog.DLL
>论坛.DLL
> FAQ.DLL
他们每个都是单独的ASP.NET MVC区域,具有自己的默认CSHTML或ASPX页面.安装,迁移和维护许多页面,包括资源,javascripts等都是长期的痛苦.因为大多数这些几乎不会改变.
我的最终网站将是这样的.
\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放在bin文件夹中即可.但是web.config可能需要进行一些更改,但很有可能我们将在数据库中保存配置值,只有需要的东西是web.config中的“Entity Framework connection string”.
我的挑战(问题)
>是可能吗?它确实对我看,但会有任何反映/许可问题吗?
>如何在一个DLL中包含cshtml / aspx视图?大概编译版本?我已经看到几个基于文本模板的视图引擎在codeplex,但我很少困惑如何实际使用它们.
>如何让ViewEngine首先检查物理目录文件是否存在,然后查看dll本身的cshtml / aspx作为资源文件?
解决方法
您可以查看
following article,说明如何使用自定义的VirtualPathProvider来检索作为资源嵌入到单独的程序集中的Razor视图.