asp.net - Blazor 页面:如何使用 BuildRenderTree 添加动态内容
问题描述
背景:我们为客户运行了几十个网站;都使用相同的代码库(ASP.NET WebForms),但设计完全不同。页面结构是从 SQL Server 元数据以编程方式生成的,使用诸如Panel
添加到 ASP.NET 页面Controls
集合中的控件,并DIVs
在呈现的 HTML 中生成。
目标:我们希望最终迁移到 ASP.NET CORE。但是,似乎没有等效于页面的控件集合。我能找到的最接近的东西是添加 Blazor 组件的 RenderTreeBuilder。
问题:是否可以BuildRenderTree
添加一个包含我们自制 HTML 的组件(例如,包含 和 之间的所有<body>
内容</body>
?
我读过以下文章:
https://chrissinty.com/building-components-via-rendertreebuilder/
...并尝试添加 HTML 元素,但它非常麻烦,我想以编程方式为几乎整个页面生成 HTML,并将其添加为一个RenderFragment
(这是正确的术语吗?)。
这可能吗?有替代方案吗?
编辑:
@Henk 的答案,使用MarkupString
结构和我的,RenderTreeBuilder.AddMarkupContent
在所需的工作量和管道方面似乎相似。
我应该考虑的两种方法有什么优缺点吗?
解决方案
如果你只想要 HTML(普通的,死的),那么你不需要渲染树:
<h1>My Page</h1>
@MyHtmlComposer()
@code{
private MarkupString MyHtmlComposer()
{
string html = "<p>Hello</p>";
return new MarkupString(html);
}
}
推荐阅读
- python - fetchone 正在返回无
- vaadin-flow - TemplateRenderer 内的内联 (?) HTML 格式
- centos6 - 将 tcsh 与用户帐户一起使用时,/bin/ 的权限被拒绝
- powershell - 是否可以在脚本范围内执行包含脚本的字符串?
- sql - 从表中的单个列中删除不间断空格的最佳查询
- promise - axios 请求的速率限制/限制问题
- android-studio - Recycleview 中的第一项动画与 android studio 中的 facebook 故事栏相同
- python - Python df.plot:如何让 x 轴从数据框的第一行开始
- flutter - 【NoSuchMethodError】audio_service 没有在 initState 中启动
- flutter - 错误地分配自定义类型的变量不会在静态类型检查中出错