.Replace(Environment.NewLine, “
”) works on loc

2019-03-23 15:02发布

I have no idea why is that. Here is my code and it works perfectly when I try it on localhost but when I upload my website my text has no <br />'s. Why this could happen? And how can I fix this issue with new lines? (white-space: pre-line; is not a solution for me, it is not working on IE6 and it is messing with my styles)

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

4条回答
唯我独甜
2楼-- · 2019-03-23 15:44

A lot has happened since IE6 (thank god!) so I would just like mention the CSS solution to the problem.

In your C#:

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

In your CSS:

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

In your Razor:

<div class="newlines">@ViewBag.StringText</div>
查看更多
我想做一个坏孩纸
3楼-- · 2019-03-23 15:51

As BuildStarted mentioned in the comments, the browsers might either send \r\n or \n, which will break, if you use Environment.NewLine - and I don't think asp.net will fix that up before running your code.

I'd suggest you use a regular expression to replace linebreaks instead: "\\r?\\n" This should match both cases (I don't expect any browser to actually use '\r' only).

查看更多
我想做一个坏孩纸
4楼-- · 2019-03-23 16:00

Instead of using Environment.NewLine, try this:

someString.Replace(@"\r\n", "<br/>");
查看更多
倾城 Initia
5楼-- · 2019-03-23 16:03

I believe this answer is best: https://stackoverflow.com/a/8196219/550975

string result = Regex.Replace(input, @"\r\n?|\n", "<br />");
查看更多
登录 后发表回答