Razor 组件与 Razor 页面

Razor Component vs Razor Page

在visual studio的菜单中,有Razor ComponentRazor Page两个选项,如果在razor组件的顶部添加@page指令,它有自己的地址。

那么它们在实践中有什么区别呢?

简介

启动 dotnet web 应用程序时,您可以在多种类型的应用程序之间进行选择,其中包括 mvc、webapp 和 Blazor:

dani@localhost ~ $ dotnet new
Templates                                         Short Name               Language          Tags                  
--------------------------------------------      -------------------      ------------      ----------------------
Razor Page                                        page                     [C#]              Web/ASP.NET           
...
Blazor Server App                                 blazorserver             [C#]              Web/Blazor            
Blazor WebAssembly App                            blazorwasm               [C#]              Web/Blazor/WebAssembly
...
ASP.NET Core Web App (Model-View-Controller)      mvc                      [C#], F#          Web/MVC               
ASP.NET Core Web App                              webapp                   [C#]              Web/MVC/Razor Pages   
...

如果您创建 webapp 您可以看到 razor 页面:

dani@localhost pp2 $ tree
.
├── appsettings.Development.json
├── appsettings.json
├── obj
│   ├── ...
├── Pages
│   ├── Error.cshtml                <-- Razor Page
│   ├── Error.cshtml.cs             <-- Razor Page
│   ├── Index.cshtml
│   ├── Index.cshtml.cs
│   ├── Privacy.cshtml
│   ├── Privacy.cshtml.cs
│   ├── Shared
│   │   ├── _Layout.cshtml
│   │   └── _ValidationScriptsPartial.cshtml
│   ├── _ViewImports.cshtml
│   └── _ViewStart.cshtml
├── ...

引用 Introduction to Razor Pages in ASP.NET Core:

Razor Pages can make coding page-focused scenarios easier and more productive than using controllers and views.

正如您在树结构上看到的那样,剃刀页面是一个 cshtmlfile (template) plus acs` 文件(行为)。该页面呈现为 html 并发送到导航器。

存在另一种应用程序,blazor。引用 Introduction to ASP.NET Core Blazor:

Blazor is a framework for building interactive client-side web UI with .NET

重要术语“交互”,不仅是渲染 html,是一种使页面交互的语言(不仅仅是在服务器上渲染 html 并将其发送到客户端)

Razor 组件与 Razor 页面

  • Razor 页面通常会在服务器上生成 html 页面并在 ASP.NET 核心 Web 应用程序
  • 上发送给客户端
  • Razor 组件(“Blazor 组件”)是用于交互式使用的 Blazor 应用程序组件(可以 运行 在 Blazor Server 应用程序和 Blazor WebAssembly 应用程序中)。

备注

Razor 组件.razor 文件中 Blazor 组件 的不合逻辑的模板名称。

Blazor 页面 是具有 @page "/..." 指令的 Blazor 组件 (.razor)。

请注意图标是正确的。就去买紫色的 Bl@zor 吧。