Ciao, in questi giorni mi è capitato di rimettere le mani in un'applicazione Web che avevo sviluppato tempo fa. L'ho dovuto faore a causa di un errore nella gestione dei caratteri speciali "è é ù ò à ù ì" (maledetti bastardi ;) ).
In pratica cosa succedeva, e cosa succede (potrebbe essere utile). La mia applicazione Web "hosta" un gridview che contiene varie colonne una custom con un bottone le altre standard con valori di tipo stringa.
Al click sul bottone vengono recuperati i valori di tipo stringa che sono associati alla riga dalla quale l'evento click è stato sollevato (astruso ma è così), con i valori di tipo stringa viene costruita ed eseguita una SELECT nel db etc etc..
Bene per questa parte tecnica nessun problema, tutto funziona alla perfezione, per cui senza fare nessun test approfondito e vista la banalità delle azioni pubblico il tutto evvai pizza e birra!!!!
A distanza di qualche mese un nuova entry si aggira nella sorgente dati, al suo interno la parola "Proprietà". Ora ogni volta che l'utente clicca sul bottone la SELECT non produce nessun risultato ma neanche nessuna eccezione (da paura!!).
Ebbene dopo una piccola sessione di debug ho scoperto che la propietà Text della classe GridViewRow del .NET Framework ritorna il valore testuale come viene interpretato dal browser ovvero con i caratteri speciali codificati (Proprietà). Ora dopo avere scoperto il problema la soluzione è semplice ...
Dim gridRow As GridViewRow = Nothing
Dim valore As String = String.Empty
Try
'Recupera l'entry selezionata della gridview
gridRow = CType(sender, System.Web.UI.WebControls.ImageButton).Parent.Parent
If gridRow IsNot Nothing Then
'Recupera il testo valore - decodifica i caratteri speciali presenti
valore = Server.HtmlDecode(gridRow.Cells(1).Text)
End If
Catch ex As Exception
'manage exception
Finally
'free all resources
End Try
Questo è tutto. Ero sicuro che il codice generato la prima volta fosse abbastanza scritto bene e senza errori invece ecco come ci si può perdere in un bicchier d'acqua (parlo esclusivamente di me). Questo piccolo errore viene percepito dal cliente come un malfunzionamento dell'applicazione per cui okkio ai particolari ...
Tags: ASP.NET GridView HTML Special Characters