I'm putting up a table that displays values from a table. One of the fields comes from a textarea input.
If I use this method then whitespace is maintained:
@Html.TextAreaFor(model => model.goalDescr, new { cols="90", rows="3", @readonly = "true"})
--example:
hey
there
--end example
However, I don't like that view so much as it still looks like a form field. I tried to use displayfor but the white space is removed and all text is one one line.
@Html.DisplayFor(model => model.goalDescr)
--example:
hey there
--end example
Is there a way to display text in my view in, outside of a form element, and maintain white space?
As Steve B's answer says, you can use
<pre>
to maintain whitespace.If however you don't like the auto-formatting
<pre>
does and want to keep your inherited styling simply use a<span>
or<div>
with thestyle="white-space:pre-wrap;"
attribute. I find this to be a more elegant solution.Live demo
When you use
DisplayFor
, my guess is that it's renderinginput type="text"
instead oftextarea
which is the reason why it's displaying it in one line.You can decorate you model with
[DataType(DataType.MultilineText)]
like this:wrap your DB content into a pre tag
You could write a custom helper which will replace new lines (
\r\n
) with<br/>
tags.and then:
or wrap in a
<pre>
tag to preserve new lines: