2011-05-09 18 views
6

Tenemos un asp: DropDownList que pueblan lado del servidor conASP.NET 4.0 DropDownList con comillas simples en el texto

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

Cuando esto se compila y se ejecuta con .NET 3.5 vemos el texto "Esta es una de prueba"

sin embargo, cuando este se compila y se ejecuta con .NET 4.0 vemos el texto 'esta es una prueba de ' s'

hemos añadido la siguiente en nuestro web.config y no hubo ningún cambio.

<pages controlRenderingCompatibilityVersion="3.5" /> 

Por el momento nos han caído de nuevo a .NET 3.5 Sin embargo, nos gustaría saber si hay una manera de evitar esto o si esto es un problema conocido o prestación es por diseño.

TIA

AJ

+0

Hola Todos Gracias por las respuestas y que me llevó a profundizar en el código en busca de una Codificar en alguna parte.Resulta que fue un: Server.HtmlEncode (entrada) que se realiza en todos los controles en una clase de página base. Consulte http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes HtmlEncode y UrlEncode Now Codifique las comillas simples sobre los cambios en .NET 4 con respecto a esto ahora reconociendo la comilla simple en HTMLEncode. Gracias por todos los comentarios de todos. – AnthonyJ

Respuesta

2

Hola a todos
Gracias por las respuestas y me llevaron a mirar más profundamente en el código buscando un código en alguna parte. Resulta que hay que era una:

Server.HtmlEncode(input) 

está realizando en todos los controles en una clase de página base.

Ahora lo que pensaba que era un problema realmente resulta ser un caso de RTFM de mi parte

De http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes
HtmlEncode y UrlEncode de Codificar Ahora comillas simples

En ASP.NET 4 , los métodos HtmlEncode y UrlEncode de las clases HttpUtility y> HttpServerUtility se han actualizado para codificar el carácter de comilla simple> (') de la siguiente manera:

El método HtmlEncode codifica instan ces de la comilla simple como '. El método UrlEncode codifica las instancias de las comillas simples como% 27.

Así que cuando estaba usando .NET3.5 mi comilla simple (') estaba siendo ignorada por HtmlEncode, pero cuando se cambiaba a .NET 4.0, HtmlEncode no lo ignoraba.

Gracias de nuevo por todas las respuestas y el trabajo que las personas aportaron a esta pregunta.

Saludos

AJ

0

Cuando se obtiene el valor de nuevo sólo podría HTMLDecode el valor seleccionado.

es decir. Server.HtmlDecode(ddlBranch.SelectedValue)

+0

En realidad, no tiene que decodificarlo en el código subyacente. El control DropDownList se encargará de eso por ti. – rsbarro

0

¿Por qué crees que es un problema? & # 39; se presenta como un apóstrofo y cuando se publique se convertirá en un apóstrofo si se selecciona ese valor.

Cuestiones relacionadas