Например, предположим, что вы собираетесь отобразить на Web-странице следующий текст:

То bold text use the <b> tag.

При попытке записи этой информации на странице или ее помещении в элемент управления у вас получится следующее:

То bold text use the tag.

Текст <b> не появится, к тому же браузер интерпретирует его как включение выделения полужирным начертанием последующего текста. С целью обхода такого автоматического поведения потребуется преобразовать потенциальные проблемные значения в специальные HTML-эквиваленты. Например,< превратится в &lt; в окончательной HTML-странице, а браузер отобразит этот символ как <. В табл. 3.4 перечислены некоторые специальные символы, которые должны быть закодированы.

Таблица 3.4. Распространенные объекты HTML

Результат
Описание
Закодированный объект
Неразрываемый пробел
&nbsp;
<
Знак "меньше"
&lt;
>
Знак "больше"
&gt;
&
Амперсанд
&аmp;
"
Кавычки
&quot;

Ниже показан пример, обходящий проблему с использованием метода 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

Hosted by uCoz