HTML-теги внутри базы данных - YAY или NAY? - PullRequest
1 голос
/ 01 октября 2009

Я использую ASP.NET с C # и SQL Server 2005. У меня на форме простой плоский ярлык ASP.NET.

<asp:Label ID="lblBodyCopy1" runat="server"></asp:Label>

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

<p class="r_box_A">text text</p><p class="r_box_B">text text text</p>

Это правильно? Если не то, что тогда, потому что мне нужно заполнить этот ярлык текстом таким образом, чтобы в каждом абзаце были абзацы и стили.

Заранее спасибо!

Ответы [ 5 ]

4 голосов
/ 01 октября 2009

Как правило, нет. Вы хотите, чтобы поля вашей БД не зависели от среды, в которой они будут использоваться (поскольку их может быть много: HTML, обычный текст и т. Д.)

Что вам нужно сделать, это переформатировать ваши поля в соответствии с тем контекстом, в котором они отображаются. Это подразумевает, что если вам нужны данные в более «богатом» формате, вы обычно используете схему разметки (возможно, markdown ), чтобы вы могли обрабатывать и отображать их любым удобным для вас способом.

Однако вы можете кэшировать это форматирование в другом поле, чтобы ускорить процесс поиска.

1 голос
/ 01 октября 2009

Кто вводит эти строки в базу данных? Обычная проблема с этим подходом заключается в том, что:

  • вам нужно убедиться, что полученный HTML-код правильно сформирован
  • это может быть небезопасно, если люди включают сценарии в html, хранящийся в базе данных и т. Д.

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

1 голос
/ 01 октября 2009

Вы можете иметь HTML-код в своей метке, а также в литерале. Элемент управления Literal намного легче, чем Label. Он предназначен для записи текста / html непосредственно в браузер. Label немного громоздче, чем Literal, но имеет все преимущества WebControl, такие как параметры стиля и т. Д.

Буквальное управление: Asp.NET Literal

0 голосов
/ 03 октября 2009

Почему бы не сохранить его в формате xhtml в базе данных - вы можете проверить его, прежде чем вставлять. Используйте тип поля XML. Таким образом, если вам нужно запросить его, вы можете, и ваши данные по-прежнему структурированы.

0 голосов
/ 01 октября 2009

Я бы лично не стал хранить HTML в базе данных ... но опять же, это зависит от контекста.

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

Как уже упоминали другие, возможно, более безопасной альтернативой было бы создание собственного синтаксиса [bbCode], очень похожего на то, как работает текстовое поле здесь (Stack OverFlow) ...

например. любой текст, выделенный жирным шрифтом ' foo ' становится [b] foo [/ b]

Добавлена ​​дополнительная работа, поскольку вам нужно будет проанализировать текст и заменить любые теги эквивалентными тегами [bbCode], а затем сделать обратное при выводе на веб-страницу, но я лично считаю, что это более безопасный подход в отношении к целостности данных.

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