У меня есть приложение MVC 2.0, которое принимает многострочный ввод из текстовой области, а затем отображает текст в другом месте. Хотелось бы сохранить хотя бы абзацы.
В настоящее время я использую помощник TextArea для формы, затем Html.Encode значение снова, когда я его вывожу.
// form view
<%: Html.TextAreaFor(model => model.Text, new { cols = 80, rows = 20 })%>
// display view
<div><%: Model.block.Text %></div
Одного этого, конечно, недостаточно. Ввод
first line
second line
отображается как
<div>first line
second line</div>
который отображается как «первая строка, вторая строка». Не идеально.
Я понимаю, что я мог бы сам вставить теги p в текст или даже попросить пользователя ввести их. Однако в этом случае мне пришлось бы отключить HtmlEncode для отображаемой страницы, что кажется проблематичным, верно? Неужели нет лучшего способа, чем вручную удалить все теги из текста, затем вызвать HtmlEncode, затем добавить теги p, а затем отключить автоматическое кодирование представлений?
Между прочим, я слышал, что люди на этом форуме ссылаются на редакторы WYSIWYG, такие как TinyMCE, для ввода в текстовую область. Пока не вижу, как это решит проблему. Редактор не собирается выполнять надежную очистку ввода, но снова потребует от меня удалить HtmlEncoding на отображаемой странице. И снова мне пришлось бы писать сложное дезинфицирующее средство с нуля или просто удалять все теги, включая a и image, до тех пор, пока причудливый редактор WYSIWYG не станет совершенно бессмысленным.