如何将 Blazor 组件呈现为 HTML 字符串

Posted

技术标签:

【中文标题】如何将 Blazor 组件呈现为 HTML 字符串【英文标题】:How to render a Blazor component into an HTML string 【发布时间】:2020-06-11 17:09:07 【问题描述】:

我正在寻找一种将 Blazor 组件呈现为 html 字符串的方法,以便能够将其用作模板引擎,以在我的 Web 应用程序中创建和发送电子邮件。想法?

【问题讨论】:

现在.NET 6 提供了一个官方解决方案:***.com/q/68889811/1768303 【参考方案1】:

是的,您可以使用 Steve Sanderson 提供的测试库并根据您的需要进行调整。 这篇文章解释了如何使用它:Introduction to Blazor Component Testing . 该库可用于生成组件的 HTML。

示例:

var host = new TestHost();
var component = host.AddComponent<YourComponent>();
var html = component.GetMarkup();

而且你可以注入你需要的服务。

host.ConfigureServices(services => 

   service.AddSingleton<MyService>();  
);

【讨论】:

【参考方案2】:

Agua 原来的答案还是不错的.. 然而

现在有一个新的解决方案可以解决这个问题:BlazorTemplater 是我写的一个库来解决这个功能(因为我的应用程序需要这个!)。

这个库将在电子邮件中为我们呈现任何.razor 组件到 HTML。支持嵌套组件、属性、依赖注入,可在 Razor 组件库中使用。

【讨论】:

很好的解决方案,谢谢

以上是关于如何将 Blazor 组件呈现为 HTML 字符串的主要内容,如果未能解决你的问题,请参考以下文章

.NET 8新预览版本使用 Blazor 组件进行服务器端呈现

无法呈现 Blazor 组件

从 JavaScript 渲染 Blazor 组件 - 如何在组件渲染后从 JavaScript 更新 Blazor 组件参数

如何从 Blazor 中的另一个组件重新渲染一个组件?

Blazor 中是不是有与 Html.Raw 等效的内容?

如何将可操作的控制字符从 JSON 文本元素传递到 razor 组件 Blazor 变量