在多个asp.net核心项目中使用单个布局页面

时间:2019-01-28 04:45:57

标签: razor asp.net-core virtual

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

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

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

1 个答案:

答案 0 :(得分:1)

.NET Core使您能够创建Razor libraries。这将是一个单独的项目,您可以在其中共享视图并将其引用到其余项目。您可以找到一个simple implementation here

您可以选择这两个选项中的一个

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

  2. 使用dotnet pack在共享位置创建一个nuget。尽管此选项要求您每次都重新打包和发布,但在某些情况下,它是一种更有组织的解决方案。您可以进行版本设置。这意味着,当您更新共享剃刀项目时,将定义一个新的版本号。您可以在每个解决方案上对此进行更新。这样可以减少项目中断的风险。假设您有5个项目,其中2个与最新更新不兼容。在这种情况下,您可以立即更新3。当您可以花时间更新这些项目以适应新要求时,可以更新其余2个项目。