.Replace(Environment.NewLine,“<br/>”)适用于localhost,但不能在我将网站上传到主机时使用

时间:2011-11-10 18:05:53

标签: c# asp.net asp.net-mvc-3 razor

我不知道为什么会这样。这是我的代码,当我在localhost上尝试它时,它运行得很好但是当我上传我的网站时,我的文本没有<br />。为什么会这样?我怎样才能用新线修复这个问题? (white-space: pre-line;对我来说不是一个解决方案,它不适用于IE6而且它正在弄乱我的风格)

@Html.Raw(Html.Encode(Model.Body)
.Replace(Environment.NewLine, "<br />"))<br />

4 个答案:

答案 0 :(得分:35)

我相信这个答案是最好的: https://stackoverflow.com/a/8196219/550975

string result = Regex.Replace(input, @"\r\n?|\n", "<br />");

答案 1 :(得分:8)

正如BuildStarted在评论中提到的那样,如果您使用\r\n,浏览器可能会发送\nEnvironment.NewLine,这会破坏 - 我认为asp.net不会在运行代码之前解决这个问题。

我建议您使用正则表达式替换换行符:"\\r?\\n"这应该符合两种情况(我不希望任何浏览器实际上只使用'\ r')。

答案 2 :(得分:3)

自从IE6 (感谢上帝!)后发生了很多事情,所以我想提一下这个问题的CSS解决方案。

在你的C#中:

ViewBag.StringText = "some text" + Environment.NewLine + "more text in a new line";

在你的CSS中:

.newlines { 
  white-space:pre-line; 
}

在你的剃刀中:

<div class="newlines">@ViewBag.StringText</div>

答案 3 :(得分:1)

不要使用Environment.NewLine,请尝试以下操作:

someString.Replace(@"\r\n", "<br/>");