2009-06-08 14 views
8

Obecnie tworzę aplikację przy użyciu ASP.NET MVC. Mam trochę danych wprowadzonych przez użytkownika do obszaru tekstowego i chcę wyświetlić ten tekst z użyciem s zamiast znaków nowej linii. W PHP istnieje funkcja o nazwie nl2br, która robi dokładnie to. Szukałem w Internecie odpowiedników w ASP.NET/C#, ale nie znalazłem rozwiązania, które byłoby dla mnie skuteczne.Pokaż nowe linie z obszaru tekstowego w ASP.NET MVC

Pięść jeden jest ten (robi nic dla mnie nie, komentarze są właśnie drukowane bez nowych linii):

<% 
    string comment = Html.Encode(Model.Comment); 
    comment.Replace("\r\n", "<br />\r\n"); 
%> 
<%= comment %> 

Drugi znalazłem to (Visual Studio mówi mi vbCrLf nie jest dostępny w tym kontekście - próbowałem go w widokach i kontrolerów):

<% 
    string comment = Html.Encode(Model.Comment); 
    comment.Replace(VbCrLf, "<br />"); 
%> 
<%= comment %> 
+1

Czy jesteś pewien, że są naprawdę podziały wiersza "\ r \ n", a nie tylko "\ n", "\ r" lub "\ n \ r"? –

+0

O ile mi wiadomo, w linii Windows podziały wiersza to \ r \ n;) - ale próbowałem też z \ n, nie robiłem żadnej różnicy. – maff

Odpowiedz

25

spróbować (nie testowane siebie):

comment = comment.Replace(System.Environment.NewLine, "<br />"); 

AKTUALIZACJA:

Wystarczy przetestowany kod - to działa na moim komputerze

aktualizacja:

Innym rozwiązaniem:

System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
System.IO.StringReader sr = new System.IO.StringReader(originalString); 
string tmpS = null; 
do { 
    tmpS = sr.ReadLine(); 
    if (tmpS != null) { 
     sb.Append(tmpS); 
     sb.Append("<br />"); 
    } 
} while (tmpS != null); 
var convertedString = sb.ToString(); 
+0

Perfect, thanks :) – maff

+4

Działa na twoim komputerze? http://www.codinghorror.com/blog/archives/000818.html –

+0

System.Environment.NewLine odnosi się do środowiska serwera, nie? Czy to działałoby, gdyby przeglądarka klienta była innym środowiskiem? – CoderDennis

3

aby zobaczyć tagi html jak DisplayFor

trzeba użyć innej metody, w rzeczywistości MVC doza wolno Ci zobaczyć tagi na stronie

ale można stosować to zignorować tę opcję

@Html.Raw(model => model.text) 

powodzenia

0

@ Html.Raw (@ Model.Comment.RestoreFormatting())

i niż ...

public static class StringHelper 
{ 
    public static string RestoreFormatting(this string str) 
    { 
     return str.Replace("\n", "<br />").Replace("\r\n", "<br />"); 
    } 
} 
Powiązane problemy