【发布时间】:2020-10-23 16:55:53
【问题描述】:
我想简化以下内容
@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 属性,在将它们(字段)呈现为 HTML 之前对字段进行预处理。换句话说,@code{} 指令中不允许有额外的代码。
【问题讨论】:
-
我不是 blazor 或 razor 语法方面的专家,但是除非您完全在代码中完成此操作,否则这将是最好的......
-
@TheGeneral:我不想创建从
ComponentBase派生的部分类,因为用BuildRenderTree生成HTML 真的很麻烦!
标签: c# asp.net-core blazor blazor-webassembly razorengine