【发布时间】:2021-04-22 16:49:05
【问题描述】:
正如我们在visual studio的菜单中看到的那样,有两个选项,Razor Component和Razor Page,我不知道这两个选项之间的确切区别是什么。如果我在 razor 组件的顶部添加 @page 指令,它就有自己的地址。它们在实践中有什么区别?
【问题讨论】:
标签: razor blazor razor-pages
正如我们在visual studio的菜单中看到的那样,有两个选项,Razor Component和Razor Page,我不知道这两个选项之间的确切区别是什么。如果我在 razor 组件的顶部添加 @page 指令,它就有自己的地址。它们在实践中有什么区别?
【问题讨论】:
标签: razor blazor razor-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
├── ...
引用Introduction to Razor Pages in ASP.NET Core:
与使用控制器和视图相比,Razor Pages 可以使以页面为中心的场景编码更轻松、更高效。
正如您在树形结构中看到的,剃须刀页面是一个 cshtmlfile (template) plus acs` 文件(行为)。页面呈现为 html 并发送到 navigator。
存在另一种应用程序,blazor。引用Introduction to ASP.NET Core Blazor:
Blazor 是一个使用 .NET 构建交互式客户端 Web UI 的框架
重要的术语“交互式”,不仅仅是渲染 html,是一种使页面交互的语言(不仅仅是在服务器上渲染 html 并将其发送到客户端)
@page 指令添加到 Blazor 组件时,它变得可路由(如“Blazor 页面”),但它仍然是一个组件。【讨论】:
obj/Debug/Razor/...
Razor 组件 是 .razor 文件中 Blazor 组件 的不合逻辑的模板名称。
Blazor 页面 是具有@page "/..." 指令的Blazor 组件 (.razor)。
请注意,图标是正确的。去买紫色的 Bl@zor 吧。
【讨论】:
.cshtml 中,并且可以(必须)有一个没有路由的 @page。