2010-09-13 408 views
1

我有一些文本,存儲在一個表中。 我正在使用asp.net mvc來顯示這個。ASP.Net MVC - 用換行符顯示文本

我的一個觀點,有以下幾點:

<%=(Model.QuestionBody.Replace("\r\n", "<br/>").Replace ("\r", "<br/>")) %> 

這樣,它會顯示正確 但是,如果我省略了.Replace,它會顯示所有在一行上。

但是,顯示在TextBox中的數據顯示格式正確。

我的問題是- 有沒有更好的方式顯示我的視圖中的文本?

+0

這實在是一個HTML的問題,而不是一個ASP.NET問題 – ggarber 2010-09-13 16:20:25

+2

@gustavogb:這是一個ASP.NET MVC的問題。我添加了HTML標籤。 – 2010-09-13 16:25:23

回答

4

你可以把你的文字放在「pre」標籤中。

<pre> 
    <%= Model.QuestionBody %> 
</pre> 

但是通常這類型的文本存儲在數據庫中的HTML包括
標籤。

0

這是一個方便的花花公子擴展方法,我用新格式化字符串。它在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()) %> 
2

我覺得this是同一個問題,不是嗎?如果是這樣,解決方案可能是相同的。

0

最好的方法......任何轉換...

@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> 

}