【问题标题】:Blazor - Generate HTML at compile timeBlazor - 在编译时生成 HTML
【发布时间】:2020-08-19 21:59:53
【问题描述】:

我正在尝试创建一个自定义 Razor 组件,该组件将 SVG 文件作为参数并将该文件呈现到我的页面中在编译时。我目前对 Blazor 的理解是,在每次页面加载期间都会呈现组件。在我的特定用例中,我希望这个自定义组件在编译时呈现并成为纯 HTML 标记的一部分。

关于我的特定需求的更多详细信息:以图标名称为参数的 Razor 组件,查看包含数百个 SVG 图标文件的开发框上的本地文件夹,打开相应文件并将内容作为内联呈现到页面上SVG,在构建步骤。这是为了避免必须使用外部工具来生成数百个组件(每个图标一个)。

【问题讨论】:

  • 在 OnInitializedAsync 中构建 html,将其包装在 MarkupString 中,然后进行渲染。您可以覆盖 ShouldRender 并返回 false 以告诉 blazor 内容永远不会更改。

标签: c# asp.net-core blazor


【解决方案1】:

您可以使用代码编织器,甚至更好的新源生成器来执行此操作https://devblogs.microsoft.com/dotnet/introducing-c-source-generators/

【讨论】:

【解决方案2】:

不幸的是,您将不得不以某种方式使用外部工具生成此代码。你问的是scaffolding,有很多方法可以做到,但 Blazor 本身并不能“自行生成”。

您可以使用T4 Text TemplatesGulp 等工具生成剃刀文件。我个人担保 T4,它很好地集成在 MS 堆栈中并且非常成熟。 Gulp 在 JS 人群中很受欢迎,但是你需要安装一堆额外的东西才能让它在 VS 中工作。它是 Javascript,而 T4 是 C#,并且已经存在于 VS 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    相关资源
    最近更新 更多