Например, предположим, что вы собираетесь отобразить на Web-странице следующий текст:
То bold text use the <b> tag.
При попытке записи этой информации на странице или ее помещении в элемент управления у вас получится следующее:
То bold text use the tag.
Текст <b> не появится, к тому же браузер интерпретирует его как включение выделения полужирным начертанием последующего текста. С целью обхода такого автоматического поведения потребуется преобразовать потенциальные проблемные значения в специальные HTML-эквиваленты. Например,< превратится в < в окончательной HTML-странице, а браузер отобразит этот символ как <. В табл. 3.4 перечислены некоторые специальные символы, которые должны быть закодированы.
Таблица 3.4. Распространенные объекты HTML
Результат |
Описание | Закодированный объект |
|---|---|---|
Неразрываемый пробел |
|
|
< |
Знак "меньше" |
< |
> |
Знак "больше" |
> |
& |
Амперсанд |
&аmp; |
" |
Кавычки |
" |
Ниже показан пример, обходящий проблему с использованием метода Server.HtmlEncode():
Label1.Text = Server.HtmlEncode("To bold text use the <b> tag.")
Вы также можете свободно использовать HtmlEncode для какой-либо часта ввода, но не для всего ввода, если собираетесь вставлять текстовую комбинацию, которая может быть недопустимой и содержать HTML-дескрипторы. Например:
Label1.Text = "To <b>bold</b> text use the ";
Label1.Text = Server.HtmlEncode("<b>") + " tag.";
На заметку! Некоторые элементы управления обходят эту проблему, автоматически кодируя дескрипторы. (Элемент управления Web типа метки не является одним из них; вместо этого он позволяет вставлять HTML-дескрипторы на ваше усмотрение.) Например, базовый набор серверных элементов управления HTML содержат дескрипторы InnexText и InnerHtml. При установке содержимого элемента управления с использованием InnerText все неразрешенные символы автоматически преобразуются в свои HTML-эквиваленты. Однако это не поможет, если вы пожелаете, установить дескриптор, содержащий смесь встроенных дескрипторов HTML и закодированных символов.
Метод НtmlEncode() особенно полезен, если вы извлекаете значения из базы данных и не уверены, является ли текст допустимым HTML. Вы можете, использовать метод HtmlDecode() для возврата текста в нормальную форму, если вам необходимо выполнять над ним дополнительные операции или сравнения в своем коде. Подобным образом метод UrlEncode() преобразует текст в форму которая может использоваться в URL, отменяя пробелы и другие спецсимволы. Это действие обычно выполняется c информацией, которую вы собираетесь добавить в строку запроса.
предыдущая следующая страница оглавление
137