Blazor 应用 Razor 页面 ComponentBase 了解

Blazor app Razor pages ComponentBase understanding

提问人:macaoidh 提问时间:10/16/2023 更新时间:10/16/2023 访问量:32

问:

.net 的新手,我被 Blazor/Razor/etc 扔进了深渊。

我正在对现有应用程序进行更改,并在这些应用程序中构建一些新页面,我试图在短时间内了解所有基础知识。

我正在尝试了解@inherits的工作原理,我已经从Microsoft文档中复制了示例。

我知道剃刀页面继承了 BlazorRocksBase 类,它将有权访问该类中的属性和方法。但是,如果实例化确实发生,那么实例化发生在哪里呢?是否有新的 BlazorRocksBase 正在后台创建?或者,剃刀页面在使用 @inherits 时是否实例化 BlazorRocksBase?

我希望这是有道理的。与 JS 相比,我发现很难找到很多通俗易懂的 .net 信息。

@page "/blazor-rocks"
@inherits BlazorRocksBase

<h1>@BlazorRocksText</h1>
using Microsoft.AspNetCore.Components;

namespace BlazorSample;

public class BlazorRocksBase : ComponentBase
{
    public string BlazorRocksText { get; set; } =
        "Blazor rocks the browser!";
}

试图为自己找到答案,但运气不佳

asp.net Razor Blazor

评论


答:

0赞 MrC aka Shaun Curtis 10/16/2023 #1

首先,Razor 页面被编译为 C# 类,默认情况下,这些类继承自 。 指示编译器将生成的类继承设置为提供的类型。请注意,类必须实现 .Componentbase@inheritsIComponent

组件是由渲染器创建和管理的,而不是由编码人员创建和管理的。

您可以将其添加到项目文件中,以查看文件夹中发出的类文件。/obj/Debug/netx/generated

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
      <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
  </PropertyGroup>

</Project>

请参阅[我的]这篇文章,其中详细介绍了组件。https://www.codeproject.com/Articles/5277618/A-Dive-into-Blazor-Components

评论

0赞 macaoidh 10/25/2023
当然,剃刀页面继承自 BlazorRocksBase,因此可以访问其属性和方法。我不确定为什么第一次没有点击,但你的第一句话就很明显了。谢谢。