Razor 中的一行 If 语句不起作用

One line If statement in Razor not working

这条语句准确地输出 HTML,我的意图是将其呈现为 HTML。

<td>@(part.IsVocal ? "<span class='badge bg-success'>Yes</span>" : "<span class='badge bg-danger'>No</span>") / 
    @(part.IsInstrumental ? "<span class='badge bg-success'>Yes</span>" : "<span class='badge bg-danger'>No</span>")</td>

它在浏览器中呈现为:

<td>
    "<span...."
    " / "
    "<span...."
</td>

所以它将它们呈现为字符串,而不是代码。

像其他人一样使用 MarkupString

<td>@(part.IsVocal ? (MarkupString)"<span class='badge bg-success'>Yes</span>" : (MarkupString)"<span class='badge bg-danger'>No</span>") / 
    @(part.IsInstrumental ? (MarkupString)"<span class='badge bg-success'>Yes</span>" : (MarkupString)"<span class='badge bg-danger'>No</span>")</td>

请注意,您可以通过多种方式使用 MarkupString,包括从属性中获取 MarkupString 值。您可以使上面的代码更短更紧凑...我刚刚回答了您的问题...

更好的方法是:

@if(part.IsVocal)
{
    <span class='badge bg-success'>Yes</span>
}
else
{
    <span class='badge bg-danger'>No</span>
}

等等..