ASP.NET MVC: как отобразить многострочный текст?
Модель Вид:
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"
и это не сработало.
какие идеи?
спасибо!
6 ответов
вы можете попробовать это:
@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 вместо использования манипуляций со строками на стороне сервера .заменить
просто добавьте это свойство стиля для рендеринга многострочных текстов:
.multiline
{
white-space: pre-line;
}
затем
<div class="multiline">
my
multiline
text
</div>
newlines будет отображаться как br элементы.
<pre>@myMultiLineString</pre>
или
<span style="white-space:pre">@myMultiLineString</span>
нет необходимости делать Html.Кодируйте, как это делается по умолчанию
[DataType(DataType.MultilineText)]
public your_property {set; get;}
и оно будет работать, если вы используете EditorFor()