【问题标题】:Razor Component vs Razor PageRazor 组件与 Razor 页面
【发布时间】:2021-04-22 16:49:05
【问题描述】:

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

【问题讨论】:

    标签: razor blazor razor-pages


    【解决方案1】:

    简介

    当您启动一个 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 并将其发送到客户端)

    Razor 组件与 Razor 页面

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

    注意事项

    【讨论】:

    • 感谢您完成其他答案。我在调试输出项目中找不到 g.cs,我使用的是 .net 5.0
    • @HappyDeveloper 使用文件资源管理器,在您的项目文件夹中签入obj/Debug/Razor/...
    • 我创建了一个空白剃须刀页面,其g.cs文件中没有Microsoft.AspNetCore.Components.ComponentBase..@dani
    • 公共类 Pages_Test : global::Microsoft.AspNetCore.Mvc.RazorPages.Page
    • 检查答案:“但是您的助手正在谈论 Razor 页面(不是可路由的 Blazor 组件)。Razor 页面是模型-视图-控制器 MVC 架构的一部分。”
    【解决方案2】:

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

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

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

    【讨论】:

    • 不,我们可以将@page 添加到剃须刀组件。在我的视觉工作室中,blazor 页面是使用 .cshtml 创建的
    • 不,Razor 页面放置在 .cshtml 中,并且可以(必须)有一个没有路由的 @page
    • @HappyDeveloper,我猜 Henk 所说的是“Razor 组件”一词存在(也出现在 MS docs 上)但该词没有逻辑,正确的名称可能是“blazor 组件”。所有组件供应商和项目都将组件称为“Blazor 组件”。
    猜你喜欢
    • 2020-05-16
    • 2023-02-08
    • 2020-05-23
    • 1970-01-01
    • 2019-09-18
    • 2019-12-11
    • 2018-01-26
    • 1970-01-01
    • 2021-09-14
    相关资源
    最近更新 更多