2012-06-15 6 views
7

Dopo il passaggio a .net 4.0, alcuni codici javascript di una griglia di terze parti si arresta in modo anomalo. Ha qualcosa a che fare con HtmlEncode and UrlEncode now encode single quotation marksPosso interrompere .net 4.0 dalla codifica delle virgolette singole?

Quindi, prima del codice sulla pagina è stato inserito in questo modo: DataItem.GetMember('Id').Value

e ora la sua in questo modo: DataItem.GetMember('Id').Value

GridView fa un eval su quella linea e si blocca con un errore di sintassi ora. Non riesco a cambiare il codice javascript in quel gridview.

Esiste comunque una soluzione per risolvere questo, senza andare indietro così?

<pages controlRenderingCompatibilityVersion="3.5" /> 

EDIT: la pagine controlRenderingCompatiblityVersion non risolve anche questo. Le virgolette singole sono ancora codificate.

+0

stai usando WebForms o MVC? –

+0

Problema interessante. "eval" è il male, quindi è sfortunato che tu sia bloccato con esso. :( – Almo

+0

Sto usando webforms –

risposta

1

Da quello che ho letto, è una funzionalità di sicurezza e Microsoft è mamma a cambiarlo. L'unico work-around che ho visto è che dovrai creare una classe di codificatore personalizzata. È possibile turn-off attributo di codifica che utilizza questo:

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

Poi aggiungere questo al web.config sotto system.web:

<httpRuntime encoderType="HtmlAttributeEncodingQuote"/> 
Problemi correlati