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

Blazor中textarea无法保留换行符,如何获取 并替换为<br/>?

Blazor中处理textarea换行符并转为<br/>的方法

1. 完善换行符替换逻辑

现有代码仅处理了Windows风格的\r\n换行,但Unix/Linux/macOS系统下的换行符是\n,建议同时覆盖两种场景:

private void BodyChanged(ChangeEventArgs e)
{
    var inputContent = e.Value?.ToString() ?? string.Empty;
    // 先替换Windows换行,再替换Unix换行
    EM.Body = inputContent.Replace("\r\n", "<br/>").Replace("\n", "<br/>");
}

2. 正确渲染转换后的HTML

直接绑定@EM.Body会被Blazor自动转义为纯文本,需使用MarkupString让<br/>标签生效:

<!-- 在Razor页面中展示处理后的内容 -->
@((MarkupString)EM.Body)

3. 实时输入响应(可选)

如果需要实时同步输入内容而非仅在失去焦点时更新,可将绑定事件改为oninput:

<textarea @bind="EM.Body" @bind:event="oninput" @oninput="BodyChanged"></textarea>

4. 双向绑定的完整流程(编辑+回显)

若要将已保存的带<br/>的内容加载到textarea编辑,需先把<br/>转回换行符:

<textarea @bind="RawBody" @bind:event="oninput"></textarea>

<!-- 展示格式化后的内容 -->
@((MarkupString)FormattedBody)

@code {
    private string RawBody { get; set; }

    private string FormattedBody => RawBody?.Replace("\r\n", "<br/>").Replace("\n", "<br/>") ?? string.Empty;

    protected override void OnInitialized()
    {
        // 从EM.Body加载时,将<br/>还原为换行符
        RawBody = EM.Body?.Replace("<br/>", "\r\n") ?? string.Empty;
    }

    // 保存时同步到EM.Body
    private void SaveContent()
    {
        EM.Body = FormattedBody;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 20:56:10