Razor组件与Razor页面
正如我们在visual studio的菜单中看到的,有两个选项,Razor Component和Razor 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您可以看到剃刀页面:
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 可以使编码以页面为中心的场景比使用控制器和视图更容易、更高效。
正如你在树结构上看到的,一个 razor 页面是一个 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 应用程序:Chris Sainty在现有 MVC 应用程序中使用 Blazor 组件。