RazorLight渲染HTML字符串时如何让br标签作为文本显示不换行
问题原因
你当前使用RazorLight.Text.RawString返回内容时,Razor引擎会直接将内容作为原生HTML渲染,因此Value中包含的<br>标签会被浏览器解析为换行效果,不符合你要作为普通文本展示的需求。
修改方案
你需要先对Value做HTML转义处理,将特殊HTML字符转换为实体编码后,再拼入HTML结构,这样所有HTML标签都会被当作普通文本展示,修改后的代码如下:
public RazorLight.Text.RawString PrintValueOrEmpty() { if (Value == null) { return new RazorLight.Text.RawString(string.Empty); } // 对Value内容做HTML转义,避免内部标签被解析执行 string encodedValue = System.Net.WebUtility.HtmlEncode(Value); var html = $@"<p class=""text-row"">{encodedValue}</p>"; return new RazorLight.Text.RawString(html); }
可选适配场景
如果你仅需要屏蔽<br>标签的解析,其余HTML标签仍需正常渲染,可以替换全量转义逻辑为针对性替换:
// 兼容不同写法的br标签 string processedValue = Value .Replace("<br>", "<br>") .Replace("<br/>", "<br/>") .Replace("<br />", "<br />");
修改后无需调整cshtml中的调用代码,直接生效。
内容的提问来源于stack exchange,提问作者tad
相关产品推荐
相关产品推荐

