【问题标题】:Why does my string passed in by Viewbag fail to display new lines?为什么我的 Viewbag 传入的字符串无法显示新行?
【发布时间】:2014-11-11 16:20:23
【问题描述】:

(MVC5) 奇怪的问题。在一个视图中,我发布到“测试页”:

<form id="testbtn" method="post" action='http://localhost:11704/Home/testpage'>
  <input type='submit' value="local testing" />
  @Html.Hidden("key1", "value1")
  @Html.Hidden("key2", "value2")
  @Html.Hidden("key3", "value3")
  @Html.Hidden("key4", "value4")
</form>

'testpage' 控制器动作是:

<HttpPost>
Function testpage(formdata As FormCollection) As ActionResult
  Dim newdata As New StringBuilder()
  For Each dataitem In formdata.Keys
    newdata.Append(dataitem.ToString()).Append(" ")
    newdata.Append(formdata(dataitem.ToString()))
    newdata.AppendLine()
  Next
  ViewBag.message = newdata
  Return View()
End Function

当我对显示的“测试页”使用“查看源代码”时,我可以看到:

<br />
key1 value1
key2 value2
key3 value3
key4 value4

但是在浏览器中显示是这样的:

key1 value1 key2 value2 key3 value3 key4 value4

任何想法为什么我的视图包中明显包含的新行没有显示在屏幕上?

谢谢。

最好的问候, 艾伦

【问题讨论】:

标签: html .net asp.net-mvc vb.net internet-explorer


【解决方案1】:

您必须使用&lt;br /&gt; 标记作为字符串中您想在视图端显示的新行。

如果您有预定义的数据,您可以将所有出现的\r\n\n 替换为&lt;br /&gt;

就这么简单;)

【讨论】:

    【解决方案2】:

    感谢@CodeCaster 提供链接。这有助于我理解在这个环境中,我显然没有意识到新线路的一些怪癖。

    我在其他地方发了 11 篇帖子试图弄清这个问题后在这里发帖。 Link。在这里发布之后,答案就出现了。我已经尝试了上面发布的想法,但是感谢您确认我对我尝试的所有变体并不疯狂。最后,这是唯一有效的方法:

    @Html.Raw(ViewBag.message.Replace(System.Environment.NewLine, "<br/>"))
    

    还不明白为什么要这样。即使尝试在 View 中替换 \r\n 也不起作用,并且控制器中的任何内容都不起作用。

    最好的问候, 艾伦

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      • 2021-05-26
      • 1970-01-01
      • 1970-01-01
      • 2020-02-26
      相关资源
      最近更新 更多