Объекты .NET и HTML: выполняется второе декодирование?

Почему, если бы я написал на странице .aspx (на .NET 3.5):

<%="W&auml;hlen Sie bitte"%>

он правильно печатает на моей html-странице:

W&auml;hlen Sie bitte

но если я пишу на странице .aspx.cs что-то вроде:

mySelectBox.Items.Add(new ListItem("W&auml;hlen Sie bitte", ""));

(это та же строка) она печатает как опцию при выборе неправильного html:

W&amp;auml;hlen Sie bitte

Он «декодирует» мою строку. Почему? И как я могу это исправить?


person markzzz    schedule 27.01.2012    source источник
comment
Могучая сила Google :), dotnetperls.com/encode-html-string   -  person Smaïl Hammour    schedule 27.01.2012


Ответы (2)


Элементы управления ASP.NET уже кодируют вывод HTML, поэтому вам не нужно делать это еще раз.

Просто:

mySelectBox.Items.Add(new ListItem("Wählen Sie bitte", ""));
person Darin Dimitrov    schedule 27.01.2012
comment
На самом деле мне нужно напечатать эту строку и поместить в ListItem, поэтому моя исходная строка — это Whlen Sie bitte. Пробовал HttpUtility.HtmlDecode("W&auml;hlen Sie bitte"), но получил Wählen Sie bitte... - person markzzz; 27.01.2012
comment
@markzzz, почему ваша исходная строка закодирована в HTML? Это ты проблема. Он не должен быть закодирован в html. Это должна быть обычная строка. Так что не кодируйте обычную строку в первую очередь. - person Darin Dimitrov; 27.01.2012
comment
Моя исходная строка получена из CMS, она уже закодирована. Оригинальная строка Whlen Sie bitte...! Но теоретически, выполняя HtmlDecode, я должен получить Wählen Sie bitte... но на самом деле это не так... - person markzzz; 27.01.2012
comment
Открыл новую ветку для моей конкретной проблемы почему я получаю другой результат с той же функцией htmldecode"> stackoverflow.com/questions/9035736/ - person markzzz; 27.01.2012

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

Однако второй синтаксис предназначен для передачи буквального текста, который вы хотите отобразить; он делает кодировку HTML для вас. Вы перекодировали это значение.

person Andrew Barber    schedule 27.01.2012