2012-06-15 18 views
7

Después de cambiar a .net 4.0, algunos códigos javascript de un gridview de terceros fallan. Tiene algo que ver con HtmlEncode and UrlEncode now encode single quotation marks¿Puedo detener .net 4.0 para codificar comillas simples?

Así que antes de un cierto código en la página se insertó como esto: DataItem.GetMember('Id').Value

y ahora es así: DataItem.GetMember('Id').Value

El gridview hace un eval en esa línea y se bloquea con un error de sintaxis ahora. No puedo cambiar el código de JavaScript en esa vista de cuadrícula.

¿Hay alguna forma de solucionar esto, sin retroceder así?

<pages controlRenderingCompatibilityVersion="3.5" /> 

EDIT: las páginas controlRenderingCompatiblityVersion no soluciona esto también. Las comillas simples todavía están codificadas.

+0

¿Está utilizando formularios web o MVC? –

+0

Problema interesante. "eval" es malo, así que es desafortunado que estés atrapado con eso. :( – Almo

+0

Estoy usando webforms –

Respuesta

1

Por lo que he leído, es una característica de seguridad y Microsoft se niega a cambiarla. La única solución alternativa que he visto es que necesitarás crear una clase de codificador personalizada. Puede desvío atributo de codificación que utiliza este:

public class HtmlAttributeEncodingQuote : System.Web.Util.HttpEncoder 
{ 
    protected override void HtmlAttributeEncode(string value, System.IO.TextWriter output) 
    { 
     output.Write(value); 
    } 
} 

A continuación, añadir esto a web.config bajo system.web:

<httpRuntime encoderType="HtmlAttributeEncodingQuote"/> 
Cuestiones relacionadas