ASP.NET Core Razor 组件类库
作者: Simon Timms
可在Razor 类库(RCL)中跨项目共享组件。 Razor 组件类库可以包含在其中:
- 解决方案中的另一个项目。
- NuGet 包。
- 引用的 .NET 库。
正如组件是常规 .NET 类型一样,RCL 提供的组件是普通的 .NET 程序集。
创建 RCL
按照 ASP.NET Core Blazor 入门 一文中的指导配置 Blazor 的环境。
-
Visual Studio
- 创建新项目。
- 选择 " Razor 类库"。 选择 “下一步” 。
- 在 "创建新的 Razor 类库" 对话框中,选择 "创建"。
- 在“项目名称”字段提供项目名称,或接受默认项目名称。 本主题中的示例使用项目名称
MyComponentLib1
。 选择 “创建” 。 - 将 RCL 添加到解决方案:
- 右键单击解决方案。 选择 "添加 > 现有项目"。
- 导航到 RCL 的项目文件。
- 选择 RCL 的项目文件( .csproj)。
- 在应用中添加对 RCL 的引用:
- 右键单击应用程序项目。 选择 "添加 > 引用"。
- 选择 RCL 项目。 选择“确定”。
备注
如果在从模板生成 RCL 时选中 "支持页和视图" 复选框,则还会将 _Imports文件添加到生成的项目的根目录中,并提供以下内容以启用 razor 组件创作:
@using Microsoft.AspNetCore.Components.Web
手动将该文件添加到生成的项目的根目录中。
-
.NET Core CLI
在命令行界面中,将Razor 类库模板(
razorclasslib
)与dotnet new命令一起使用。 在下面的示例中,创建了一个名为MyComponentLib1
的 RCL。 执行命令时,将自动创建包含MyComponentLib1
的文件夹:dotnet new razorclasslib -o MyComponentLib1
备注
如果从模板生成 RCL 时使用
-s|--support-pages-and-views
开关,则还应将 _Imports文件添加到生成的项目的根目录中,并提供以下内容以启用 razor 组件创作:@using Microsoft.AspNetCore.Components.Web
手动将该文件添加到生成的项目的根目录中。
若要将库添加到现有项目,请在命令行界面中使用dotnet add reference命令。 在下面的示例中,将 RCL 添加到应用中。 在应用程序的项目文件夹中执行以下命令,并在其中包含库的路径:
dotnet add reference {PATH TO LIBRARY}
使用库组件
若要使用另一个项目的库中定义的组件,请使用以下方法之一:
- 使用带有命名空间的完整类型名称。
- 使用 Razor @的指令。 可以按名称添加单个组件。
在下面的示例中,MyComponentLib1
是包含 SalesReport
组件的组件库。
可以使用命名空间的完整类型名称引用 SalesReport
组件:
<h1>Hello, world!</h1> Welcome to your new app. <MyComponentLib1.SalesReport />
如果使用 @using
指令将库引入到范围中,也可以引用此组件:
@using MyComponentLib1 <h1>Hello, world!</h1> Welcome to your new app. <SalesReport />
将 @using MyComponentLib1
指令包含在顶级 _Import文件中,使库的组件可用于整个项目。 将指令添加到任何级别的 _Import razor文件,以将该命名空间应用于文件夹中的单个页面或一组页面。
生成、打包和传送到 NuGet
由于组件库是标准的 .NET 库,因此将其打包并传送到 NuGet 与将任何库打包到 NuGet 没有什么不同。 在命令行界面中使用dotnet pack命令执行打包:
dotnet pack
在命令行界面中使用dotnet nuget push命令将包上传到 nuget。
使用静态资产创建 Razor 组件类库
RCL 可以包括静态资产。 静态资产可用于使用库的任何应用。 有关详细信息,请参阅 ASP.NET Core 的类库中的可重用 Razor UI。