Blog
home > blog > Il tag asp:ImageButton fa fallire la validazione XHTML

Tag: .Net, tag, validazione, XHTML, workaround, Microsoft, bug

Il tag asp:ImageButton fa fallire la validazione XHTML

Asp.net produce tag xhtml validi, però l'ImageButton crea un errore per il W3C Validator. Vediamo un facile workaround.
di Maurizio Ceravolo
A differenza del vecchio asp o del php, asp.net ha un modello di sviluppo delle pagine più slegato dall'html. La filosofia di questo modello ha le fondamenta nell'obiettivo di permettere anche agli sviluppatori windows di realizzare applicazioni web, senza avere molta conoscenza delle problematiche di un sito. Ovviamente, per fare un lavoro di qualità, occorre conoscere approfonditamente html e css.

Dal .net 1.0 Microsoft ha introdotto gli webcontrol. Sono dei tag propri, in cui il nome del tag ha anteposto un namespace asp:. Questi tag vengono processati lato server e, a seconda dello user-agent che ha richiesto la pagina, possono essere convertiti nell'html che permetta su quel determinato browser una visualizzazione più efficiente.

Dal .net 2.0 di Microsoft produce durante il rendering tag XHTML validi.

Se nella pagina è presente un tag asp:ImageButton avviene un comportamento molto strano. Se guardate l'origine della pagina sul browser è tutto codice XHTML valido. Se però si va sul W3C Validator e si mette l'indirizzo della stessa pagina (l'indirizzo, non il codice che abbiamo preso dall'origine) viene fuori un bell'errore.

Dal cappello che ho fatto a questo post si può capire il motivo di questa anomalia.

Il renderer di asp.net produce XHTML valido se il browser è moderno, tipo Explorer, Chrome, Firefox o Mozilla, mentre se vede lo user-agent del W3C Validator, produce degli errori. Questo perchè con tutta probabilità il renderer non riconosce quello user-agent e quindi decide di adottare una versione di html più vecchia, la HTML 4.0 Transitional, che è sicuramente visualizzabile dai browser più vecchi, che potrebbero non digerire una novità come l'XHTML.

Quindi se noi siamo di quelli a cui piace mettere sulle nostre pagine il tastino del W3C, che invita a vedere quanto siamo bravi validando il nostro XHTML, faremmo una figura barbina, perchè il validatore riporta un errore che invece non c'è.

A questo punto occorre trovare un workaround. In effetti ci sono due alternative.

La prima è inserire, nella direttiva page delle pagine che contengono l'asp:ImageButton, l'attributo ClientTarget="uplevel" che forza la generazione dei secondo un DOM più sofisticato.

La seconda, che mi piace di più, permette di prendere il toro per le corna e risolvere il problema all'origine. Occorre inserire il seguente codice nel web.config, all'interno del tag system.web

    <browserCaps>
      <case match="W3C_Validator*">
        TagWriter = System.Web.UI.HtmlTextWriter
        W3CDomVersion = 1.0
      </case>
    </browserCaps>

Questo codice permette di dire al renderer delle pagine di riconoscere lo user-agent del W3C Validator e, solo per lui, forzare la generazione di codice XHTML valido. Indipendentemente da quello che abbiamo messo in pagina. Con qualsiasi evoluzione che ci faremo, non saremo costretti ad andare ogni volta e riverificare la validazione dell'html. Ovviamente a meno che non modifichiamo noi l'html e ci introduciamo noi degli errori. Al solito il bug più grosso è l'essere umano. :-)

Dato un numero sufficiente di occhi, tutti i bug vengono a galla. (Eric Steven Raymond)
Post correlati
2011
20
Giugno
Facebook rilascia l'SDK c#
Maurizio Ceravolo
Facebook ha appena rilasciato l'SDK ufficiale per sviluppare applicazioni che si interfacciano con Facebook utilizzando il c#.
2010
22
Ottobre
Windows Phone 7, un nuovo contendente nella guerra mobile
Maurizio Ceravolo
Il nuovo sistema operativo mobile di casa Microsoft. Potenzialità e debolezze del nuovo prodotto.
2010
24
Novembre
UrlRewrite e Postback: il problema sull'action del form in asp.net
Maurizio Ceravolo
Sperimentando l'UrlRewrite in un sito .net ci si scontra con un errore sui postback. Vediamo come risolverlo
2011
7
Giugno
Windows 8 in video anteprima
Maurizio Ceravolo
Microsoft ha mostrato al mondo come sarà la prossima versione di Windows, Windows 8. Diventerà più touch, più orientato ai tablet e ai processori ARM e si avvicinerà a Windows Phone 7
2013
22
Febbraio
Bug su Chrome con l'autenticazione di asp.net
Maurizio Ceravolo
In caso di autenticazione che si passa fra i subdomini di un sito, che ha una autenticazione .net, chrome periodicamente perde i cookie. Vediamo la soluzione.


Archivio Mensile Blog
Tag Cloud
api Apple Facebook geek Geolocalizzazione Google Google+ guida humor innovazione media Microsoft Motori di ricerca SEO social network Spazio tutorial video videogiochi viral
Ultimi Post
I migliori di oggi
I più popolari del mese
Top post