razor - 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
├── ...
与使用控制器和视图相比,Razor Pages 可以使编码以页面为中心的场景更容易、更高效。
正如您在树形结构上看到的,剃须刀页面是一个 cshtml file (template) plus a
cs` 文件(行为)。该页面呈现为 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。
推荐阅读
- python - Blender Python 对象“分组”
- css - 在 Divi 主题中删除边距的问题
- python-2.7 - 具有绝对函数的隐式图的问题
- ruby-on-rails - 在没有模型的情况下使用 form_with 时的 Rails 和白名单参数,
- android - 为什么我最近从运行 Android 10 的三星设备上收到这么多 InflateException 崩溃?
- ios - RxSwift 上有某种优先级运算符吗?
- macos - 在 Catalina 上手动编译后的 Apache Xdebug 错误
- python - 生成所有可能的有序字符串排列
- java - CriteriaQuery 返回错误结果
- python - 我尝试在 Windows 10 上为 python 3.8.1 安装 kivy,但出现此错误