【问题标题】:.Replace(Environment.NewLine, "<br />").Replace(Environment.NewLine, "<br />")
【发布时间】:2011-06-27 12:34:00
【问题描述】:

为什么.Replace(Environment.NewLine, "&lt;br /&gt;")会给出这个结果:

asdasd<br />waahahahaha<br />asdadsa<br />multiline<br /><br /><br />asdad

【问题讨论】:

  • 可能是因为你在这些地方有一个换行符。
  • 我想要的是让
    离开并放下下一行

标签: asp.net asp.net-mvc-2


【解决方案1】:

可能是因为“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

编辑

在您的情况下,您的网页将在网络浏览器中显示 &lt;br /&gt; 而不会创建新行,因为它对 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"

【讨论】:

  • 但我正在使用
    ")%>
  • @paul, Model.Body 很可能在mutilineasdad 之间包含多个新行。
  • 不...但是当我查看页面源时,它显示
    现在是 <br />
  • @paul,哦,我现在明白你的问题了。等一下,我会更新我的答案。
  • @paul,这是一个错字,那里也应该有一个:。再次更新!
猜你喜欢
  • 2012-01-05
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 2014-01-24
  • 1970-01-01
  • 2010-11-04
相关资源
最近更新 更多