2010-09-13 20 views
1

J'ai du texte, stocké dans une table. J'utilise asp.net mvc pour l'afficher.ASP.Net MVC - Affichage de texte avec des retours à la ligne dans

Un de mes points de vue, les éléments suivants sont:

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

Comme cela, il affiche correctement Cependant, si je laisse de côté la .Replacer, il affiche sur une seule ligne.

cependant, les mêmes données affichées dans une zone de texte affiche correctement formaté.

Ma question Y at-il est- une meilleure façon d'afficher le texte à mon avis?

+0

Ceci est vraiment une question de HTML, pas une question ASP.NET – ggarber

+2

@gustavogb: Il est une question ASP.NET MVC. J'ai ajouté la balise HTML. –

Répondre

4

Vous pouvez mettre votre texte dans une étiquette "pré".

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

Cependant habituellement ce genre de texte est stocké dans la base de données html, y compris les
tags.

0

c'est une méthode extention dandy pratique j'utiliser pour les chaînes de format avec de nouvelles lignes. C'est en vb, donc si vous êtes une personne de type C# il faudra quelques ajustements. mais cela fonctionne et garde les vues bien rangées.

 <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 

donc alors à votre avis vous auriez:

<%=(Model.QuestionBody.FormatForDisplay()) %> 
2

Je pense que this est le même problème non? Si oui, la solution pourrait être la même.

0

Meilleure méthode ... Aucune conversion ...

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

}