gpt4 book ai didi

c# - 如何使用?或者 ??有条件地呈现 Blazor 模板?

转载 作者:行者123 更新时间:2023-12-03 14:42:08 25 4
gpt4 key购买 nike

我想简化以下

@if (Template != null)
{
@Template
}
else
{
<span>No contents!</span>
}
???.是否可以?
试图
我在下面的尝试
  • @Template?.BeginInvoke()
  • @{Template==null? @Template : <span> No data to display! </span>}
  • @(Template??<span> No data to display! </span>)

  • 产生红色波浪线。
    编辑
    我想我需要提交我想要简化的真实场景。
    @typeparam T

    @if (Items == null)
    {
    if (NullTemplate != null)
    {
    @NullTemplate
    }
    else
    {
    <span style="color: red">Null...</span>
    }
    }
    else if (Items.Count == 0)
    {
    if (EmptyTemplate != null)
    {
    @EmptyTemplate
    }
    else
    {
    <span style="color: red">Empty ...</span>
    }
    }
    else
    {
    @HeaderTemplate

    foreach (T item in Items)
    {

    @ItemTemplate(item)
    }
    }


    @code{
    [Parameter] public RenderFragment NullTemplate { get; set; }
    [Parameter] public RenderFragment EmptyTemplate { get; set; }
    [Parameter] public RenderFragment HeaderTemplate { get; set; }
    [Parameter] public RenderFragment<T> ItemTemplate { get; set; }
    [Parameter] public List<T> Items { get; set; }
    }
    我不想将传入的值缓冲到 ****Template具有私有(private)字段的属性,在将字段(字段)呈现为 HTML 之前对其进行预处理。换句话说, @code{} 中没有额外的代码。指令是允许的。

    最佳答案

    当您存储 <span style="color: red">Null...</span> 时,它可以工作(我认为)部分作为 RenderFragments。这可以接受吗?
    这会将这个逻辑移动到构造函数或 SetParameters 方法。

    [Parameter] public RenderFragment NullTemplate { get; set; } = builder => StubTemplate(builder, "Null");
    [Parameter] public RenderFragment EmptyTemplate { get; set; } = builder => StubTemplate(builder, "Empty");

    private static void StubTemplate(RenderTreeBuilder __builder, string what)
    {
    <span style="color: red">@what</span>
    }
    请注意 __builder名称是必需的。
    然后您不再需要主要组件中的任何条件代码:
    @if (Items == null)
    {
    @NullTemplate
    }
    或者,您可以省略属性初始化并执行以下操作:
     @(EmptyTemplate ?? (builder => StubTemplate(builder, "Empty")))
    但我会为所有的 () 感到头晕目眩.

    关于c# - 如何使用?或者 ??有条件地呈现 Blazor 模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62707401/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com