.NET Framework迁移至.NET Core后视图换行符异常求助
问题原因
.NET Core和.NET Framework在IHtmlContent的输出逻辑上存在细节差异:直接通过字符串插值配合Html.Raw输出含换行符的内容时,.NET Core会把字符串中的换行符转义成字面量\n,而非像.NET Framework那样保留实际的换行格式。这是两个框架对原始HTML内容编码处理的实现不同导致的,虽然不影响浏览器渲染,但会破坏单元测试的预期结果。
解决方案
推荐使用.NET Core官方推荐的HtmlContentBuilder来构造HTML内容,避免字符串插值带来的转义问题:
public static async Task<IHtmlContent> InlineStyle(this IHtmlHelper htmlHelper, string componentName) { var styling = await File.ReadAllTextAsync($"wwwroot/css/{componentName}.css"); var contentBuilder = new HtmlContentBuilder(); contentBuilder.AppendHtml("<style>"); contentBuilder.Append(styling); contentBuilder.AppendHtml("</style>"); return contentBuilder; }
也可以尝试统一文件换行符格式(将CSS文件转为CRLF或LF),但前者是更可靠的解决方式,因为它完全遵循.NET Core的HTML内容构造规范。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

