跨多个项目共享视图组件

Ren*_*eza 3 asp.net-core-mvc asp.net-core asp.net-core-viewcomponent asp.net-core-2.1

我有一个相当大的视图组件,我想在两个不同的 ASP.NET Core MVC 项目中使用它。到目前为止,我找到了两种实现此目的的方法:

  1. 将其封装成DLL
  2. 制作共享(虚拟)网络项目

这两种方法之间的权衡是什么?我的视图组件有嵌套的视图组件,它需要 java 脚本来实现一些动态功能。

Xee*_*vis 5

从 ASP.NET Core 2.1 开始,您希望使用专为这种情况设计的Razor 类库 (RCL) 。

RLC 允许您使用 razor 视图、页面、控制器、页面模型、视图组件和数据模型创建可重用的 UI。额外的好处是,视图(甚至部分视图)可以被主应用程序覆盖,其中 Razor 标记(.cshtml 文件)优先,允许每个应用程序进行更改,而无需修改原始共享组件。

  • 从 Visual Studio文件菜单中,选择新建 > 项目
  • 选择ASP.NET Core Web 应用程序
  • 命名库(例如,“RazorClassLib”)> OK。为了避免与生成的视图库发生文件名冲突,请确保库名称不以 .Views 结尾。
  • 验证已选择ASP.NET Core 2.1或更高版本。
  • 选择Razor 类库>确定
  • 从主应用程序引用 RCL(您也可以将共享库制作为 NuGet 包
  • 启动应用程序并访问/MyFeature/Page1

阅读完整文档