Ответ 1
Вы можете попробовать следующее:
@Html.Raw("<pre>"+ Html.Encode(Model) + "</pre>");
Это сохранит ваш контент и покажет его как есть.
Показать модель:
public class Note
{
[DataType(DataType.MultilineText)]
public string Text { get; set; }
}
Шаблон редактора по умолчанию создает элемент <textarea>
с сохраненными символами новой строки.
Шаблон отображения по умолчанию отображает текст как одну строку с удалением новых строк.
Я пробовал это, но он не работает:
~/Views/Shared/EditorTemplates/MultilineText.cshtml
@model string
@Html.Raw(Model.Replace(System.Environment.NewLine, "<br />"))
Я могу сделать что-то глупое как @Html.Raw(Model.Replace("e", "<br />"))
, и это сработает, но, конечно, я хочу только заменить символы новой строки элементом <br />
! Я также попытался использовать @"\n"
, и это тоже не сработало.
Любые идеи?
Спасибо!
Вы можете попробовать следующее:
@Html.Raw("<pre>"+ Html.Encode(Model) + "</pre>");
Это сохранит ваш контент и покажет его как есть.
Ответ заключается в том, что вы ничего не сделали бы. Это работа вашей таблицы стилей. В основном, сделайте контент любым способом, например, в <p>
, и используйте CSS для управления сохранением пробела. Например:
(в вашем теге стиля или в вашем CSS)
p.poem {
white-space:pre;
}
(в вашей разметке HTML)
<p class="poem">
There is a place where the sidewalk ends
And before the street begins,
And there the grass grows soft and white,
And there the sun burns crimson bright,
And there the moon-bird rests from his flight
To cool in the peppermint wind.
</p>
я бы рекомендовал форматировать вывод с помощью css вместо того, чтобы использовать обработку строк на стороне сервера, например .replace,
просто добавьте это свойство стиля для рендеринга многострочных текстов:
.multiline
{
white-space: pre-line;
}
затем
<div class="multiline">
my
multiline
text
</div>
newlines будет отображаться как br.
Попробуйте @Html.Raw(Model.Replace("\r\n", "<br />"))
<pre>@myMultiLineString</pre>
ИЛИ
<span style="white-space:pre">@myMultiLineString</span>
Не нужно делать Html.Encode, как это было сделано по умолчанию
[DataType(DataType.MultilineText)]
public your_property {set; get;}
и он будет работать, если вы используете EditorFor()