Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

asp.net mvc convert \n new line to html breaks

I have a textarea in mvc. When data is entered into that and I'm displaying it back to the user, how do I show the line breaks?

I display like this:

<%= Model.Description%> 
like image 786
Shawn Mclean Avatar asked Feb 17 '11 17:02

Shawn Mclean


2 Answers

The following class implements a HtmlHelper that properly encodes the text:

public static class HtmlExtensions {     public static MvcHtmlString Nl2Br(this HtmlHelper htmlHelper, string text)     {         if (string.IsNullOrEmpty(text))             return MvcHtmlString.Create(text);         else         {             StringBuilder builder = new StringBuilder();             string[] lines = text.Split('\n');             for (int i = 0; i < lines.Length; i++)             {                 if (i > 0)                     builder.Append("<br/>\n");                 builder.Append(HttpUtility.HtmlEncode(lines[i]));             }             return MvcHtmlString.Create(builder.ToString());         }     } } 

It's easy to use in your views:

<%= Html.Nl2Br(Model.MultilineText) %> 

Or with Razor:

@Html.Nl2Br(Model.MultilineText) 
like image 87
Codo Avatar answered Oct 17 '22 17:10

Codo


For a slightly different (and, IMHO, better and safer) way of solving the problem, see this answer to a similar question.

Basically, instead of going through the trouble of converting all new line characters to <br> elements, it is as simple as applying the following CSS to the element where you are showing the inputted text:

white-space: pre-line 
like image 32
mkataja Avatar answered Oct 17 '22 17:10

mkataja