обработка ввода textarea для сохранения абзацев - PullRequest
0 голосов
/ 14 июля 2010

У меня есть приложение MVC 2.0, которое принимает многострочный ввод из текстовой области, а затем отображает текст в другом месте.Я хотел бы сохранить хотя бы абзацы.

В настоящее время я использую помощник TextArea для формы, а затем Html. Повторно кодирую значение при выводе.

// 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 и изображение, пока модный редактор WYSIWYG не станет полностью бессмысленным.

Ответы [ 2 ]

0 голосов
/ 14 июля 2010

Вы можете кодировать текст HTML, а затем применять теги <p>

<%= "<p>" + Html.Encode(Model.block.text).Replace("\n", "</p><p>") + "</p>" %>
0 голосов
/ 14 июля 2010

Не могли бы вы просто заменить все символы новой строки \n элементами разрыва <br />, используя что-то вроде ...

string output = Model.block.Text.Replace ("\n", "<br />");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...