检查RenderFragment是否为空

时间:2019-05-13 19:03:09

标签: asp.net-core razor blazor

有没有一种方法可以检查RenderFragment是否为空?

例如,在下面的代码中,如果MyComp为true,Detail将显示Open,并且您可以通过单击标题来切换Open。现在,如果没有标题,我希望Detail片段始终处于打开状态。如果有HeaderTitle.IsEmpty之类的属性,这将很容易。

    <MyComp Open="false">
        <HeaderTitle>
             @if (!String.IsNullOrEmpty(hdr)) {
                 ...
                <div class="flex-grow"> @hdr </div>
            }
        </HeaderTitle>
        <Detail>
            ...
        </Detail>
   </MyComp>

修改

为进一步讨论,我添加了功能请求here

2 个答案:

答案 0 :(得分:0)

以下代码片段显示了如何使用Razor模板来定义RenderFragment和RenderFragment值,如下所示:

@{ 
    RenderFragment template = @<p>The time is @DateTime.Now.</p>;
    RenderFragment<Pet> petTemplate = (pet) => @<p>Your pet's name is @pet.Name.</p>;
}

如果这在Blazor中可行,我想也可以检查RenderFragment是否不为空:

if ( template == null) {// the template property is empty}

因此,您可以在组件的生命周期事件之一中对此进行编码,并采取相应措施...

我希望我能理解您的问题,并且对您有帮助...

答案 1 :(得分:0)

旧问题,但由于尚未得到解答,正在投票....

RenderFragment是一种代码方法,而不是容器,因此它不具有Empty状态。 它可以为null-从某种意义上说是空的,因为它不会产生任何渲染输出。

在此问题中,您可以将null视为Empty-只需在您的代码中包含一个方法

bool HeaderTitleIsEmpty => HeaderTitle is null;