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

ASP.NET MVC视图中<br>标签转义为文本不换行的解决方法

问题原因

ASP.NET MVC 的 Razor 视图引擎默认会对 @ 语法输出的字符串做HTML自动编码,用来规避XSS注入风险。你直接拼接在字符串里的 <br/> 标签会被编码为 &lt;br/&gt;,因此会作为普通文本显示在页面上,无法被浏览器解析为换行标签。

可行方案

如果要保留现有三元表达式的拼接代码风格,只需要用 Html.Raw() 方法包裹最终拼接的字符串即可。该方法会返回IHtmlString类型对象,Razor引擎遇到这类对象时不会做HTML编码,会直接将内容原样输出到页面响应中。

基础实现代码

@if (member.Employee != null)
{
    <td>
        @(member.Employee.FullName != null ? member.Employee.FullName : "-" )
    </td>
    <td>
        @(Html.Raw(
            member.Employee.AddressLine1 != null ? 
                member.Employee.AddressLine1 + (member.Employee.AddressLine2 != null ? "<br/>" + member.Employee.AddressLine2 : "")
                : "-" 
        ))
    </td>
    @* 其余原有字段逻辑保持不变 *@
}

安全优化版本

如果AddressLine1、AddressLine2是支持用户自主输入的字段,直接输出原始内容存在XSS注入风险,建议先对地址字段内容单独做HTML编码,再拼接<br/>标签,兼顾功能和安全性:

<td>
    @(Html.Raw(
        member.Employee.AddressLine1 != null ? 
            Html.Encode(member.Employee.AddressLine1) + (member.Employee.AddressLine2 != null ? "<br/>" + Html.Encode(member.Employee.AddressLine2) : "")
            : "-" 
    ))
</td>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:36:25