首页 > 解决方案 > Razor 组件与 Razor 页面

问题描述

正如我们在visual studio的菜单中看到的那样,有两个选项,Razor Component和Razor Page,我不知道这两个选项之间的确切区别是什么。如果我在 razor 组件的顶部添加 @page 指令,它就有自己的地址。在实践中它们之间有什么区别?

在此处输入图像描述

标签: razorblazorrazor-pages

解决方案


介绍

启动 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你可以看到剃刀页面:

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
├── ...

引用ASP.NET Core 中 Razor 页面简介

与使用控制器和视图相比,Razor Pages 可以使编码以页面为中心的场景更容易、更高效。

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

存在另一种应用程序,blazor。引用ASP.NET Core Blazor 简介

Blazor 是一个使用 .NET 构建交互式客户端 Web UI的框架

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

Razor 组件与 Razor 页面

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

笔记

  • 在下面查看Henk 的回答,“Razor 组件”一词没有逻辑,在 Henk (和我的)看来,应该是“Blazor 组件”,因为它仅在 Blazor 应用程序上运行。
  • Razor 组件供应商将此组件命名为“Blazor 组件”:https : //www.syncfusion.com/blazor-components,https://www.telerik.com/blazor-ui , ...
  • 请注意,当您@page向 Blazor 组件添加指令时,它变得可路由(如“blazor 页面”),但它仍然是一个组件。
  • 您可以将 Razor 组件(“Blazor 组件”)和 Razor 页面添加到 web 应用程序:在现有 MVC 应用程序中使用 Blazor 组件,作者:Chris Sainty。

推荐阅读