首页 > 解决方案 > 在多个 asp.net 核心项目中使用单个布局页面

问题描述

我在一家公司工作,该公司开发了许多供内部使用的网站,但许多网站的部分都是面向公众的。重要的是我们所有的网站看起来都一样。在迁移到 dotnet 核心时,我们发现我们不再能够使用虚拟目录来托管我们网站的布局页面。

我们将布局页面存储在文件共享中,并在我们的项目中使用虚拟目录引用它。这样,如果我们需要更改页脚、页眉或某些样式/js 中的信息,我们可以将单个更改上传到布局页面,并且该更改将发生在我们所有的网站上。

我已经尝试过研究任何可能的方法,我唯一能想到的是一个自定义中间件,它从文件共享中下载布局页面并在当前布局页面过时时更新它。

标签: razorasp.net-corevirtual

解决方案


.NET Core 使您能够创建Razor 库。这将是一个单独的项目,您可以在其中共享视图并将其引用到您的其余项目。你可以在这里找到一个简单的实现

您可以选择这两个选项之一来执行此操作。

  1. 在每个解决方案中引用此项目。由于您的解决方案直接引用 razor 库,因此在公共库中所做的任何更改都将反映在每个解决方案中,而无需重新打包和发布。

  2. 用于dotnet pack在共享位置创建 nuget。虽然此选项需要您每次都重新打包和发布,但在某些情况下,它会是一个更有条理的解决方案。您可以进行版本设置。这意味着当您更新共享剃须刀项目时,您将定义一个新的版本号。您可以在每个解决方案上更新它。这降低了项目中断的风险。假设您有 5 个项目,其中 2 个与最新更新不兼容。在这种情况下,您可以立即更新 3。当您可以花时间更新这些项目以匹配新要求时,可以更新剩余的 2 个。


推荐阅读