Как разрешить выборочный ввод HTML в моем приложении ASP.NET MVC?

Я хочу, чтобы конечный пользователь вводил текст без какого-либо форматирования в текстовой области в моем приложении ASP.NET MVC. Однако я хотел бы сохранить любые разрывы строк или абзацы, которые они создали при наборе текста.

Если я использую текстовую область без разрешения ввода HTML, по умолчанию разрывы строк и абзацы не сохраняются, когда этот текст сохраняется в базе данных или считывается для отображения в пользовательском интерфейсе.

Если я AllowHTML, я рискую внедрить код.

Единственный другой способ, который я могу придумать для реализации этого, - это не AllowHTML, а вместо этого иметь настраиваемый атрибут, который проверяет, разрешает ли только теги <p> и теги <br />, но затем для реализации этого, как бы просто это ни казалось, Мне придется вести словарь всех возможных HTML-тегов, а поскольку природа Интернета настолько изменчива, бог знает, какие еще синтаксические токены из CSS или чего-то подобного.

Я слишком усложняю проблему? Есть ли что-то из коробки или есть более простой способ реализовать это?

Я использую ASP.NET MVC 5.2.3, ориентированный на ASP.NET 4.5.


person Water Cooler v2    schedule 29.01.2016    source источник
comment
Что вы имеете в виду под сохранять разрывы строк? Если пользователь просто набирает обычный текст и использует клавишу возврата для ввода нового абзаца, он будет сохранен.   -  person    schedule 29.01.2016
comment
Но разрывы строк сохраняются, поэтому не знаю, почему вы утверждаете, что это не так. Если вы имеете в виду в отображении (например, <div>@Model.SomeProperty</div>), вы их не видите, это потому, что вам нужно стилизовать элемент с помощью whitespace:pre;   -  person    schedule 29.01.2016
comment
@StephenMuecke Спасибо. Это правильный ответ. :-)   -  person Water Cooler v2    schedule 29.01.2016
comment
И сделайте это с помощью css, а не заменяя символы новой строки (то есть \n\r, а не \n) тегом <br/> :)   -  person    schedule 29.01.2016
comment
Я только что ответил на него более гибким подходом: stackoverflow.com/a/44140165/538387   -  person Tohid    schedule 23.05.2017


Ответы (1)


textarea сохраняет разрывы строк как \n символов. При последующем отображении значения за пределами элемента textarea как части страницы символы '\n' необходимо заменить на '<br />'.

person Martin Staufcik    schedule 29.01.2016
comment
Для всех, кто, как и я, читает это, как предложил @StephenMuecke в комментарии к моему вопросу, вместо того, чтобы выполнять операцию замены вручную, просто стилизуйте элемент, отображающий текст, с помощью white-space: pre. - person Water Cooler v2; 29.01.2016