有没有办法在 blazor 中查看 razor 文件的 RenderTreeBuilder 版本?

Is there a way to see the RenderTreeBuilder version of the razor file in blazor?

以索引页为例:

<h1>Hello, world!</h1>

Welcome to your new app.

<SurveyPrompt Title="How is Blazor working for you?" />

据我了解,这将使用 RenderTreeBuilder 翻译成一些代码,可能看起来像这样:

builder.OpenElement(0, "h1")
builder.AddContent(1, "Hello, world!")
.
.
.

有没有地方可以检查 Razor 页面的 RenderTreeBuilder 版本? 我想开始尝试 RenderTreeBuilder 并想知道它是如何完成的,以供参考。

如果重复,请提前致歉。如果是这样我会删除这个问题。

谢谢!

你是对的。 BlazorMarkup 被翻译成使用 RenderTreeBuilder 的 C# 文件。它与 WPF 在处理 XAML 和 C# 文件时所做的相当。

构建项目后,转到 obj/debug/net5.0/Razor/

请记住使用调试版本。否则,您将看不到这些文件。

您将看到与项目中相同的目录结构。只要目录包含 razor 文件,就会列出这些目录。打开文件,例如 Index.razor.g.cs(.g 代表生成),您可以看到对 RenderTreeBuilder

的调用
 [Microsoft.AspNetCore.Components.RouteAttribute("/")]
    public partial class Index : Microsoft.AspNetCore.Components.ComponentBase
    {
        #pragma warning disable 1998
        protected override void BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder)
        {
            __builder.AddMarkupContent(0, "<h1>Hello, world!</h1>\r\n\r\nWelcome to your new app.\r\n\r\n");
            __builder.OpenComponent<BlazorApp1.Shared.SurveyPrompt>(1);
            __builder.AddAttribute(2, "Title", "How is Blazor working for you?");
            __builder.CloseComponent();
        }
        #pragma warning restore 1998
    }