2010-09-13 1 views
1

У меня есть текст, хранящийся в таблице. Я использую asp.net mvc для отображения этого.ASP.Net MVC - Отображение текста с символами новой строки в

Один из моих взглядов, имеет следующее:

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

Как это, он показывает правильно Однако, если я опустить .Привернуть, он отображает все в одной строке.

Те же данные, отображаемые в TextBox, однако, отображаются правильно отформатированными.

Мой вопрос is- Есть ли лучший способ отображения текста в моем представлении?

+0

Это действительно HTML вопрос, а не вопрос ASP.NET – ggarber

+2

@gustavogb: Это ASP.NET MVC вопрос. Я добавил тег HTML. –

ответ

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> 

}

Смежные вопросы