为什么.Replace(Environment.NewLine, "<br />")
会给出这个结果:
asdasd<br />waahahahaha<br />asdadsa<br />multiline<br /><br /><br />asdad
答案 0 :(得分:5)
可能是因为“multiline”和“asdad”之间有多个新行。
示例强>
var someText = string.Format("First line{0}Second line{0}Multiple line breaks{0}{0}{0}some text", Environment.NewLine);
var html = someText.Replace(Environment.NewLine, "<br />");
html现在看起来像这样:
First line<br />Second line<br/>Multiple line breaks<br /><br /><br />some text
修改强>
在您的情况下,您的网页将在网络浏览器中显示<br />
,而不是创建新行,因为它会对html输出进行编码。
您需要做的是使用HtmlString,试试这个:
<div class="display-field">
<%: new HtmlString(Model.Body.Replace(Environment.NewLine, "<br />")) %>
</div>
另请参阅StackOverflow上的这个帖子,讨论"ASP.NET MVC Razor - output HTML string non escaped"。