Razor、StringBuilder、HTML 换行符?

Razor, StringBuilder, HTML line break?

我遇到了一个让我觉得很傻的问题....给定 Razor 中的以下代码:

@{
    ...
    if (purchasedEvent.Address != null && purchasedEvent.Address != String.Empty){
        addressBlock.AppendFormat("{0}<br />", purchasedEvent.Address); 
    }
    ...
}
@addressBlock.ToString()

<br /> 被视为文字文本(也就是说我最终看到页面上呈现了类似 123 Cool Street<br />Anytown... 的内容。将代码(返回)更改为 addressBlock.AppendLine(purchasedEvent.Address) 不会也没有任何好处(呈现 127 Cool Street Anytown...。我需要做什么才能使 Razor 引擎遵守该换行符?

您需要使用 Html.Raw。引用文档:"Returns markup that is not HTML encoded."

所以像

@html.Raw(addressBlock.ToString())

原因是 MVC 假设您提供的是您希望看到的文本,因此 HTML 对其进行了编码。 Raw 允许您告诉它不要那样做。