【问题标题】:How to use common Layout and styles across multiple Asp.net MVC applications如何在多个 Asp.net MVC 应用程序中使用通用布局和样式
【发布时间】:2012-05-12 10:13:17
【问题描述】:

我有一个视觉工作室解决方案,其中包含多个具有相同外观的 Telerik MVC4 剃须刀项目。我不想在所有 MVC4 项目中复制相同的布局、CSS/样式、图像和 js 文件。实现这种可重用性的最佳方法是什么?我尝试创建一个 commonUI 项目的虚拟目录,并尝试在 _ViewStart.cshtml 中使用 http://localhost/... 引用 _layout.cshtml 但它抱怨说“http:/localhost/MyMvcApp/Views/Shared/_Layout.cshtml”不是有效的虚拟路径。”

请帮忙!

【问题讨论】:

    标签: asp.net-mvc layout razor asp.net-mvc-4 telerik-mvc


    【解决方案1】:

    四点建议:

    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/

    【讨论】:

    • 我无法使用这些区域,因为我的 Web 项目实际上是 3 个不同的项目,而不是组件(管理员等)。它们只是共享公共实体和数据库。它们旨在供不同的用户组使用。 2)仍然像你提到的那样在部署时复制它们。
    • 我将不得不更多地研究选项 3 和 4。无论如何,谢谢。
    • 阿米特,我现在没有时间尝试这个,但如果你强烈希望让它发挥作用,也许试试我的编辑方法
    • 谢谢米尔科。我明天试一试。最近忙于其他事情。
    • 我知道我通常喜欢在发帖前先确认一下,但这不是一个快速检查的事情,所以我很懒,只是发送了指针:)
    【解决方案2】:

    区域不好,因为您无法单独部署它们。像你一样,我尝试使用虚拟目录,并成功地使用相对语法引用布局:

    @{
        Layout = "~/Common/Layouts/Layout-001.cshtml";
    }
    

    如上,项目的布局继承了根目录下/common/虚拟目录下的布局。随着通用布局(以及它的 bootstrap 和 jquery 版本)的发展,您可以使用并排版本命名的物理文件夹(如 common.v01、common.v02)。因此,您可以通过将 VD 的路径更改为适当的版本来将应用程序升级到更新的通用布局。

    这样做的缺点是您需要使用 IIS(不是 express)作为您的开发和测试平台。

    【讨论】:

      猜你喜欢
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多