Как мне поддерживать форматирование комментариев, когда я сохраняю их в базу данных в приложении asp.net mvc? - PullRequest
2 голосов
/ 16 марта 2010

Название было, вероятно, не очень ясно. Рассмотрим это scnerio: у вас есть блог-сайт или просто любой сайт, на который пользователь может ответить через комментарий. Вы хотите сохранить форматирование для комментариев. Таким образом, абзацы должны быть отделены, отступ в первом предложении, допускается выделение жирным шрифтом ключевых слов и т. Д. Как можно поступить так?

Это относится практически ко всем видам блогов, включая этот сайт. Сначала я предполагаю, что комментарии сохраняются в этой базе данных либо в формате xml, либо в виде необработанного html. Это действительно мои единственные предположения. Я полагаю, что магические строки могут использоваться для обозначения начала и конца различного форматирования, но магические строки обычно не одобряются.

Я делаю это в приложении asp.net mvc. Я использую версию 1 mvc, но я бы хотел перейти на 2, если это облегчает решение.

Ответы [ 6 ]

1 голос
/ 16 марта 2010

Краткий ответ: посмотрите на Уценка .

Более длинный ответ: форматирование текста сохраняется при фиксации в базе данных, но не отображается должным образом при отображении на веб-странице, если элементы форматирования текста, такие как возврат каретки (CR) и перевод строки (LF), не преобразованы в HTML.

0 голосов
/ 09 июля 2018

Это позволит View сохранять разрывы строк из базы данных:

@Html.Raw(item.YourField.Replace(Environment.NewLine, "< br/ >"))

или вы можете использовать


< pre > @Html.DisplayFor(model => model.YourField) < / pre >
0 голосов
/ 16 марта 2010

Если вы хотите что-то вроде этого текстового редактора, который мы используем, перейдите на http://wmd -editor.com / . Сконфигурируйте его для вывода Markdown и сохранения в базе данных.

Если вам нужно больше энергии, вы можете использовать FCKEditor, CKEditor (новый FCKEditor), http://ckeditor.com/,, который очень прост в настройке, и они добавят на вашу страницу приятный редактор WYSIWYG javascript, и вы сохраните HTML в своей базе данных .

Один недостаток заключается в том, что вам нужно будет позаботиться о злонамеренных пользователях с помощью атак на JavaScript, таких как межсайтовый скриптинг. Вы должны санировать пользовательский ввод перед сохранением его в базе данных.

Microsoft выпустила http://antixss.codeplex.com/ AntiXSS, который должен помочь санировать пользовательский ввод.

0 голосов
/ 16 марта 2010

Вот что я делаю.

Я использую Код Джеффа Sanatize (в ASP.NET MVC как Html.Helper). Код сохраняется в базе данных в том виде, в котором он был написан пользователем, но он отображается на экране с выполнением санитарной обработки.

0 голосов
/ 16 марта 2010

Ваш подход звучит для меня осуществимо. Однако я хотел бы отметить, что перед сохранением любого HTML-кода в БД его необходимо очистить.

Вам понадобится действительно параноидальный код, чтобы удалить неприятные кусочки, которые некоторые злодеи настаивают на попытке опубликовать ...

Одним из подходов может быть преобразование допустимых HTML-тегов для разметки (как предполагает другой ответ) и безжалостного удаления остальных!

0 голосов
/ 16 марта 2010

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

И магические строки на самом деле не осуждаются, особенно в определенных сценариях (например, на форумах, таких как phpBB, использующий BBCode), когда вы защищаете пользователей, просматривающих информацию, и не позволяете им взломать вашу БД или веб-сайт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...