【问题标题】:How to create ASP.NET MVC area as a plugin DLL?如何将 ASP.NET MVC 区域创建为插件 DLL?
【发布时间】:2012-07-14 09:54:03
【问题描述】:

这是我想要实现的,我想将 ASP.NET MVC 的区域分离为纯单个 DLL。

  1. 博客.DLL
  2. 论坛.DLL
  3. 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 中的“实体框架连接字符串”。

我的挑战(问题)

  1. 有可能吗?在我看来确实如此,但会有任何反射/权限问题吗?
  2. 如何在一个 DLL 中包含 cshtml/aspx 视图?可能是编译版本?我在 codeplex 上看到了几个基于文本模板的视图引擎,但我对如何实际使用它们有点困惑。
  3. 如何让 ViewEngine 先检查物理目录文件是否存在,然后将 dll 本身中的 cshtml/aspx 视为资源文件?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 plugins razor


    【解决方案1】:

    您可以查看following article,它说明了如何使用自定义 VirtualPathProvider 来检索作为资源嵌入到单独程序集中的 Razor 视图。

    【讨论】:

    • aspx 文件呢?大多数情况下我们只使用cshtml,但是对于打印PDF,cshtml不能使用未知的html标签,所以我们有时使用aspx。
    • 我不知道 ASPX。我已经很久没有停止使用它了。也许可以调整虚拟路径提供程序。
    • 您可以使用可以直接从 Nuget 安装的 EmbeddedResourceVirtualPathProvider。它适用于资产文件。 github.com/mcintyre321/…
    【解决方案2】:

    也许值得看看 mvccontrib 的便携式区域。自 MVC 2 以来我就没有使用过它们,但是有人在使用 MVC 3 时遇到了一些问题,发现了以下 SO 问题,并提供了一些可能的解决方案:ASP.NET MVC 3, Razor Views, and Portable Areas

    【讨论】:

      【解决方案3】:

      MvcCodeRouting 支持您想要的,以及许多其他很酷的东西。查看 this post 关于 ASP.NET MVC 插件的信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-19
        • 1970-01-01
        • 1970-01-01
        • 2012-10-31
        • 1970-01-01
        • 2021-10-29
        • 2012-05-24
        • 2014-04-20
        相关资源
        最近更新 更多