【发布时间】:2021-05-03 10:25:44
【问题描述】:
我试图根据某些条件将我的组件之一包装在某个特定标签上。
为了简单起见,假设我有一个
<div class="inner-class">
this must be in inner-class div and wrapped in some-class div
</div>
如果 'condition' == true 那么它应该将它包装在另一个 div 中,结果应该是这样的
<div class="wrapper-class">
<div class="inner-class">
this must be in inner-class div and wrapped in some-class div
</div>
</div>
在你说之前,使用 if-else 方法。我必须说不。因为标签和其中的类是动态的,所以我不能那样写。
我想做的是
@if (condition)
{
@:<div class="wrapper-class">
}
<div class="inner-class">
this must be in inner-class div and wrapped in some-class div
</div>
}
@if (condition)
{
@:</div>
}
我认为它应该可以完成这项工作。 但问题是浏览器在将内部 div 放入之前关闭了外部 div。
【问题讨论】:
-
这些句子中需要'@'吗? @:这是@Html.Raw("your html in here") 的缩写版本。这在 Razor 页面和 mvc 中使用,并且按应有的方式工作。但在 blazor 中,标签在呈现下一个 html 和平之前以某种方式关闭。我认为问题出在 Razor 预编译器中。当我遇到这种情况时,我要么用手写的
@if .... else ....将它编码出来,要么使用 RenderTreeBuilder 编写书面的 C# 代码。这个问题需要更清楚 - 您拒绝完全有效的答案,因为它们不符合您未包含在问题中的标准。Mrc 这是一种方法,但这会使代码非常难看。所以我选择了 BuildRenderTree
标签: c# html .net blazor blazor-server-side