【问题标题】:.Replace(Environment.NewLine, "<br />") works on localhost but not when I upload my website to host.Replace(Environment.NewLine, "<br />") 在本地主机上工作,但当我将网站上传到主机时却不行
【发布时间】:2011-11-10 18:05:52
【问题描述】:

我不知道为什么会这样。这是我的代码,当我在 localhost 上尝试它时它工作得很好,但是当我上传我的网站时,我的文本没有&lt;br /&gt;'s。为什么会发生这种情况?我怎样才能用新线解决这个问题? (white-space: pre-line; 对我来说不是一个解决方案,它不适用于 IE6,而且它会影响我的风格)

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

【问题讨论】:

  • 两个地方对Environment.NewLine的定义是一样的吗?
  • 在处理网络输入时,我总是替换 \n 而不是使用 Environment.NewLine 因为不同的浏览器可以发送 \r\n\n 但它们都至少发送 \n

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    正如 cmets 中提到的 BuildStarted,浏览器可能会发送 \r\n\n,如果您使用 Environment.NewLine,这将中断 - 我认为 asp.net 在运行您的之前不会修复它代码。

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

    【讨论】:

      【解决方案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>
      

      【讨论】:

        【解决方案4】:

        不要使用Environment.NewLine,试试这个:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多