项目之间的MVC共享布局

时间:2018-12-12 15:35:47

标签: asp.net-mvc

我想知道是否有一种方法可以在所有项目中共享_layout.cshtml文件。这样,如果我想更改我们公司的页面布局,则只需在一个地方进行更改。到目前为止,从研究中我已经看到人们提到可能创建.dll文件。另外我不是在谈论MVC中的领域。我想要的是让我所有单独的应用程序都引用一个共享的布局页面,而不是每个应用程序都拥有自己的布局。

2 个答案:

答案 0 :(得分:3)

一次模式(我已参与实现)是制作一个包含布局文件(以及您希望在所有站点之间共享的任何其他内容,例如其他CSS文件)的Nuget程序包例程等),然后将软件包(通过私有供稿)安装到需要它的每个项目中,从而覆盖默认的布局文件)。

Nuget软件包的来源本身就是一个带有自定义nuget配置的C#MVC项目,该项目可确保它仅将C#项目中的必要内容包含到可分发的nuget文件中。

除了易于安装和关注点分离之外,通过Nuget分发的另一个大优点是,如果您对源文件进行更改并更新了软件包,则每个安装了软件包的应用程序都可以选择何时才是最佳时机。来更新到最新版本(如果有的话),因此,如果您更改一项内容,则不必同时更改所有与之相关的内容(例如,{ {3}}会遭受该问题的困扰-如果您在这种情况下更改了布局文件,它将立即传播到使用该布局文件的所有项目,因此,如果您想对该项目进行任何其他更改,则必须处理在您发布其他更改之前,布局更改会产生任何影响,这在当时可能并不理想/不便。)

答案 1 :(得分:1)

我过去实现此目标的方法是使用“添加为链接”。

首先,将布局文件添加到新库中,该库可以在不同项目之间共享。然后在要使用布局页面的每个项目中,将布局页面添加为链接:

  1. 在解决方案资源管理器中,右键单击要放置布局文件的文件夹。
  2. 单击添加现有,然后选择要使用的布局文件。
  3. 点击“添加”按钮右侧的小箭头,然后从下拉列表中选择“添加为链接”。现在,您的布局文件将就位。
  4. 取决于项目的设置方式,您可能需要按照this answer中的步骤进行操作,以确保在构建时复制链接的文件。您可能还需要确保源控件将忽略复制的文件。
  5. 更新您的nn.Sequential以使用新的布局文件。

您需要对布局进行的任何更改都可以对原始文件进行,并且在构建时所做的更改将由您的项目获得。