结果为 HTML 的 Blazor 三元运算符

Blazor ternary operator with HTML as result

经过很长一段时间的反应后,我一直在使用 Blazor,我真的不明白(据我所知)Blazor 如何在 HTML 中动态组合结果代码。举个简单的例子,我有一个用户配置文件,我想显示一个图标/徽章来展示用户的非活动状态。这样做的“正确”方法是什么?我有这样的东西(在伪代码中,因为我似乎无法让解释器接受我的尝试):

@(UserViewModel.IsInactive == true ? "<i class=\"ps-2 fas fa-seal-exclamation\" style=\"color: yellow\" title=\"Inactive\"></i>" : "")

这只是 return 实际的 HTML 但是,它不会呈现它。

我经常看到的另一种类似情况是有条件地显示一行文本,比如如果地址存在,则显示它,否则不显示该行:

@(UserViewModel.Address?.Address1 ? UserViewModel.Address.Address1 + "<br/>" : "")

这行得通,但似乎有点尴尬——是否可以在代码隐藏 C# 页面 (MyComponent.blazor.cs) 中执行一个函数,它只会 return 呈现的 HTML ?如果可能的话,我还没有为它找到正确的 return 类型,而且它总是出错。在反应中,我会根据传入的参数或对象将许多小辅助函数组合到 return HTML——我不知道如何在 Blazor 中执行此操作。

试试这个

@if(UserViewModel.IsInactive)
{
    <i class="ps-2 fas fa-seal-exclamation" style="color: yellow" title="Inactive"> 
    </i>
}