【发布时间】:2020-07-11 11:20:40
【问题描述】:
我正在尝试动态创建一个 div,其中包含 3 个其他 div,但是,浏览器会在 blazor 结束注入代码之前自动添加关闭标记,这很烦人。有没有办法防止这种情况发生?
int i = 1;
foreach (itemModel item in itemList)
{
if (i == 1)
{
@((MarkupString)"<div>");
}
<div></div>
if (i == 3)
{
@((MarkupString)"</div>");
i = 0;
}
i++;
}
想要的输出
<div> <- Parent
<div></div> <- Child
<div></div> <- Child
<div></div> <- Child
</div>
实际输出
<div></div> <- Parent
<div></div> <- Child
<div></div> <- Child
<div></div> <- Child
有解决办法吗?
【问题讨论】:
-
“实际输出”是什么意思 - 服务器的 HTML 输出(如网络选项卡/源中所示)或浏览器在“检查元素”中显示的内容?
-
@AlexeiLevenkov 我所说的“实际输出”是指浏览器如何显示元素
-
您真的应该查看原始 HTML 以了解代码是否呈现了您不期望的内容,或者浏览器正在修复您喜欢的 HTML。旁注:我会简单地使用嵌套循环并正常渲染开始/结束
div(for (all; i+=3){ <div> for (0; i <3; i++) { render(start+i)} </div>}... -
@AlexeiLevenkov 我用了你的想法,做了一些改变,它奏效了。您可以将其发布为答案,如果您愿意,我会将其标记为解决方案。谢谢!
-
我看到你已经解决了这个问题 - 只是想解释一下 Blazor 的 MarkupString 不会让你创建未封闭的元素 - 这就是你看到这种行为的原因。
标签: c# html blazor blazor-server-side asp.net-blazor