asp.net-mvc - MVC 项目间共享布局

标签 asp.net-mvc

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

最佳答案

一旦模式(我已经参与实现)是制作一个 Nuget 包,其中包含布局文件(以及您想要在所有站点之间共享的任何其他内容,例如其他 CSS 文件、错误处理例程等),并将包(来自私有(private)提要)安装到需要它的每个项目中,从而覆盖默认布局文件)。

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

除了易于安装和关注点分离之外,通过 Nuget 进行分发的另一大优势是,如果您更改源文件并更新包,每个安装了该包的应用程序都可以选择什么时候合适更新到最新版本(如果有的话),所以你没有问题,如果你改变一件事,你必须同时改变所有依赖于它的东西(例如,Slappywag's answer 中的添加为链接选项会遇到这个问题 - 如果您在那种情况下更改了布局文件,它会立即传播到所有使用它的项目,所以如果您想在该项目中进行任何其他更改,您必须处理任何影响在发布其他更改之前更改布局,这在当时可能不合需要/不方便。)

关于asp.net-mvc - MVC 项目间共享布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53746422/

相关文章:

javascript - 在客户端 ASP.NET MVC 上将 List<string> 转换为 Json 数组

asp.net-mvc - asp.net MVC View 和强类型 View 数据

未读取 C# MVC url 参数

javascript - 如何在javascript中访问对象属性?

c# - 在 ASP.NET MVC 中通过重定向传递复杂对象?

c# - 有效的 RegEx 不适用于 ASP.Net MVC RegularExpression 属性

javascript - 如何从 Angular 路由中删除 ASP.NET MVC Controller 名称

asp.net-mvc - 我是否应该为每个系统应用程序或每个环境提供应用程序洞察资源?

javascript - 如何在更改事件中获取复选框的数据元素

C# Linq 将对象属性转换为数组