ASP.NET 4.0 DropDownList с одинарными кавычками в тексте - PullRequest
6 голосов
/ 09 мая 2011

У нас есть asp: DropDownList, который мы заполняем на стороне сервера

ddlBranch.Items.Add(new ListItem("TEST","This is a's test"));

Когда это скомпилировано и запущено в .NET 3.5, мы видим текст «Это тест»

Однако, когда это скомпилировано и запущено в .NET 4.0, мы видим текст «Это тест '

Мы добавили следующее в наш web.config, и изменений не было.

<pages controlRenderingCompatibilityVersion="3.5" />

В настоящее время мы вернулись к .NET 3.5, однако нам хотелось бы знать, есть ли способ обойти это, или это известная проблема рендеринга, или она задумана.

ТИА

AJ

Ответы [ 3 ]

2 голосов
/ 10 мая 2011

Привет всем
Спасибо за ответы, и они привели меня к более глубокому изучению кода и поиску кодировки где-нибудь.Оказывается, это было:

Server.HtmlEncode(input)

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

Теперь то, что я считал проблемой, на самом деле оказалось RTFM с моей стороны

From http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes
HtmlEncode и UrlEncode теперь кодируют одинарные кавычки

В ASP.NET 4 методы HtmlEncode и UrlEncode классов HttpUtility и> HttpServerUtility были обновлены для кодирования символа одиночной кавычки> (') следующим образом:

Метод HtmlEncode кодируетэкземпляры одинарной кавычки как '.Метод UrlEncode кодирует экземпляры одиночной кавычки как% 27.

Поэтому, когда я использовал .NET3.5, моя одинарная кавычка (') игнорировалась HtmlEncode, но при переходе на .NET4.0 это не было проигнорировано HtmlEncode.

Еще раз спасибо за все ответы и работу, которую люди вкладывают в этот вопрос.

С уважением

AJ

0 голосов
/ 09 мая 2011

Почему вы считаете, что это проблема? 'отображается как апостроф и после публикации превратится в апостроф, если выбрано это значение.

0 голосов
/ 09 мая 2011

Когда вы вернете значение, вы можете просто HTMLDecode выбранного значения.

т. Server.HtmlDecode(ddlBranch.SelectedValue)

...