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%>
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)
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With