Исходя из вашего обновленного вопроса, я собираюсь сделать потенциально неверное предположение о вашем понимании.
Я предполагаю, что вы смотрите на источник HTML и не понимаете, почему строка кодируется в одном месте и не кодируется в другом.Объяснение довольно простое: серверные элементы управления автоматически кодируют свое содержимое , а Response.Write
записывает необработанный вывод.Для этого есть причина: элементы управления на стороне сервера часто содержат пользовательский ввод , который по своей природе небезопасен , поэтому он автоматически кодируется для предотвращения межсайтовых скриптовых атак илив менее гнусных случаях пользовательский ввод просто разрушает вашу страницу.
В качестве примера представьте, что список не не кодирует содержимое, и вы сделали это:
ddAdulti.Items.Add(new ListItem("</select>", ""));
ddAdulti.Items.Add(new ListItem("An actual valid value", ""));
Конечным результатом будет то, что ваша разметка будет выглядеть примерно так:
<select>
<option></select></option>
<option>An actual valid value</option>
</select>
Как видите, это явно сломано.То, что вы в итоге получите, зависит от интерпретирующего браузера, но, скорее всего, это пустой выпадающий список.
Теперь, поскольку элементы управления do кодируют свое содержимое, разметка в конечном итоге будет:
<select>
<option></select></option>
<option>An actual valid value</option>
</select>
и все работает хорошо.: -)
[edit]
Мне приходит в голову, что из моего примера, вероятно, не ясно, почему вы видите поведение с таким персонажем, как 'ä'.Это связано с тем, что многие кодировки символов не поддерживают умноженные буквы, поэтому для управляющих авторов, вероятно, проще всего просто кодировать все символы за пределами 7-битного набора символов ASCII.: -)
[править 2]
Мне становится ясно, что оригинальный пост на самом деле не описывает реальную проблему.Очевидно, что markzzz пытается получить незашифрованный HTML из базы данных и отобразить его как есть для клиента.Для этого уже существует элемент управления WebForms: LiteralControl
.Он будет отображать то, что вы вставляете в него, в незашифрованном виде.
Тем не менее, я знаю, что я не знаю, как встроить это в DropDownList
- посмотрите мое объяснение того, как рендеринг HTML может сломаться.Однако, если вы просто хотите отобразить список элементов, но не обязательно раскрывающийся список, вы можете использовать LiteralControl
внутри Repeater
или что-то подобное.