You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor:如何在C#绑定的布尔判断中嵌入HTML标签

Blazor中根据布尔值动态在按钮中嵌入HTML标签的解决方案

你的示例代码会将HTML字符串直接转义输出,而不是渲染成实际的<i>元素——因为Blazor默认会对绑定的字符串内容进行HTML转义。以下是几种可行的解决方法:

方法一:使用Razor条件语句(推荐)

直接在按钮模板内通过@if分支渲染不同内容,可读性最强,也最符合Blazor的开发习惯:

<button type="button">
    @if (SwitchBool)
    {
        Save
    }
    else
    {
        <i class="fa fa-pen"></i>
    }
</button>

@code {
    public bool SwitchBool { get; set; }
}

方法二:使用RenderFragment

如果需要复用这段动态内容,可以定义一个返回RenderFragment的方法,通过C#逻辑返回不同的HTML片段:

<button type="button">
    @GetButtonContent()
</button>

@code {
    public bool SwitchBool { get; set; }

    private RenderFragment GetButtonContent() => SwitchBool 
        ? (RenderFragment)(@<text>Save</text>) 
        : (RenderFragment)(@<i class="fa fa-pen"></i>);
}

方法三:使用MarkupString(谨慎使用)

若必须用三元表达式的形式,可以将内容包装为MarkupString,它会跳过HTML转义直接渲染内容。注意:此方法存在XSS风险,绝对不要用于渲染用户输入的内容:

<button type="button">
    @(SwitchBool ? (MarkupString)"Save" : (MarkupString)"<i class='fa fa-pen'></i>")
</button>

@code {
    public bool SwitchBool { get; set; }
}

内容的提问来源于stack exchange,提问作者SideSky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 20:51:13