ASP.Net MVC - 显示带有换行符的文本
Posted
技术标签:
【中文标题】ASP.Net MVC - 显示带有换行符的文本【英文标题】:ASP.Net MVC - Displaying text with newlines in 【发布时间】:2010-09-13 16:17:59 【问题描述】:我有一些文本,存储在表格中。 我正在使用 asp.net mvc 来显示这个。
我的一个观点,有以下几点:
<%=(Model.QuestionBody.Replace("\r\n", "<br/>").Replace ("\r", "<br/>")) %>
像这样,它显示正确 但是,如果我省略 .Replace,它将全部显示在一行上。
然而,在 TextBox 中显示的相同数据会以正确的格式显示。
我的问题是—— 有没有更好的方式在我的视图中显示文本?
【问题讨论】:
这真的是一个 html 问题,而不是一个 ASP.NET 问题 @gustavogb:这是一个 ASP.NET MVC 问题。我添加了 HTML 标签。 【参考方案1】:您可以将文本放在“pre”标签中。
<pre>
<%= Model.QuestionBody %>
</pre>
然而,这种文本通常以包含 标签的 html 形式存储在数据库中。
【讨论】:
【参考方案2】:我认为this 是同一个问题,不是吗?如果是这样,解决方案可能是相同的。
【讨论】:
【参考方案3】:这是一种方便的花哨扩展方法,我用它来格式化带有新行的字符串。它在 vb 中,所以如果你是一个 c# 类型的人,它需要一些调整。但它可以工作并保持视图整洁。
<Extension()> _
Public Function FormatForDisplay(ByVal stringToFormat As String) As String
If Not String.IsNullOrEmpty(stringToFormat) Then
stringToFormat = Replace(stringToFormat, vbCrLf, "<br />")
stringToFormat = Replace(stringToFormat, vbCr, "<br />")
stringToFormat = Replace(stringToFormat, vbLf, "<br />")
Return stringToFormat
End If
Return stringToFormat
End Function
那么在您看来,您将拥有:
<%=(Model.QuestionBody.FormatForDisplay()) %>
【讨论】:
【参考方案4】:最佳方法...没有转化...
@model MyNameSpace.ViewModels.MyViewModel
@
ViewBag.Title = "Show formatted text";
@using (Html.BeginForm())
<div class="h3">
<span style="white-space: pre-wrap">@Model.myText</span>
</div>
【讨论】:
以上是关于ASP.Net MVC - 显示带有换行符的文本的主要内容,如果未能解决你的问题,请参考以下文章
在按钮单击文本框值是空的使用 asp.net mvc 显示警报?
ASP.NET MVC3 - 带有@Html.EditorFor 的文本区域