查看 ASP.net MVC 的重用

View reuse for ASP.net MVC

所以我继承了一个程序(APPLE),其代码基线源自另一个程序(ORANGE)。为了让多个团队更容易更新此代码,我们将 'common' 内容移到共享项目 (TREE) 中。到目前为止,我们已经通过将模型和控制器提取到共享库(显然有一些 Models/Controllers 保留在橙色中,因为它们特定于该应用程序)使这项工作变得很好。

但是,我在如何提取视图方面遇到了瓶颈。这个想法是共享库 (TREE) 包含公共视图(如文件导入和登录页面),同时将程序特定代码留在 'main' ASP.net 应用程序中(APPLE/ORANGE ).

我找到了 this 篇看起来非常不错的文章。除了 1) 我没有 Microsoft.AspNetCore Nuget(我的 Microsoft.AspNet.[package] 似乎没有 ViewComponent),2) 创建新的 Web MVC 项目时,它没有wwwroot、Program.cs 或 .json 文件。我还发现了另一篇关于使用 VirtualFiles 的文章,但它并没有真正指出 EmbeddedResource class 所在的位置,并且(我可能会误解)但它似乎在寻找虚拟位置中的所有视图.

那么,将常见视图拆分到我创建的共享项目中并在我们的程序应用程序中使用它们的最佳方法是什么?

这是一个使用 MVC 的 ASP.net 应用程序。它不是 Razor 应用程序。

我可以访问Microsoft.AspNet.(各种包)和DevExpress.(各种包),但必须经过一个过程才能获得其他包(所以我不能轻易下载包和测试建议)。

您可以简单地制作自己的 NuGet 包,当安装到任何项目中时,它会添加共享视图、控制器和您想要的任何其他文件。

我们已经在我的组织中成功地做到了这一点,可以有效地为任何新的 MVC 应用程序提供基本模板。它添加了某些特定的视图和模板,覆盖了布局视图,设置了控制器并添加了一些全局过滤器。它还添加了一些 CSS 和 JavaScript 文件,因此我们在应用程序上获得了 ready-made 企业品牌,提供了一致的共享功能,等等。它还依赖于我们的其他一些 nuget 包,这些包随后也被加载到项目中,这些包提供共享功能,例如错误处理、日志记录服务、pre-made 数据连接、API 客户端和其他位和我们编写的几乎每个应用程序都需要这些片段。

包本身是从一个单独的项目构建的,该项目也 source-controlled 与任何其他代码库一样,我们维护编号版本。

这作为一种在项目之间共享代码和组件的方式非常有效。这也意味着可以毫不费力地将任何更新推送到所有应用程序。

您的 nuget 包可以手动安装到项目中,或从您自己的提要提供 - 您可以在 Azure DevOps 和其他地方创建私有 NuGet 提要,甚至可以将共享驱动器上的文件夹用作包源,如果需要的话。

(P.S。您链接到的那篇文章是关于 .NET Core 的,而您使用的是 .NET Framework。项目结构明显不同,因此您感到困惑。)