Cómo forzar un determinado adaptador de rendering en ASP.NET 2.0

Hace unas semanas un lector del blog me escribió comentándome que tenía problemas para validar cierta aplicación Web como XHTML Transitional porque decía que en concreto los controles ImageButton se le renderizaban con un atributo border="0" que no está permitido por XHTML Transitional, y por lo tanto no pasaba la validación de el W3C.

El caso es que a mi me renderizaba correctamente el control (sin border, usando estilos) al ponerle la cabecera del transicional:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

El caso es que todo el problema venía de que, al usar el validador de el W3C para llamar a la URL en la que estaba la página, el módulo de renderización adaptativa de ASP.NET no reconocía el agente de usuario del programa que hacía la descarga 8es decir, no lo reconocía como Internet Explorer, Firefox o cualquier otro navegador), y al no saber qué capacidades tiene el cliente que accede a la página utiliza por lo tanto el menor común denominador. Ello implica usar HTML puro y duro del más rancio y antiguo, por lo que el control ImageButton en este caso se visualizaba con ese marcado no compatible.

El amigo Marc Contijoch que es como se llama el lector encontró la solución el sólo y me ha permitido ponerla aquí, así que ahí va...

Consiste en introducir en web.config el siguiente nodo:

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

De este modo si el navegador que accede a nuestra página es el validador de la W3C (que tiene la cadena indicada en el userAgent) se renderiza usando el TagWriter indicado y no da ya problemas.

Al parecer la solución la encontró aquí: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=216241&SiteID=1

Espero que esto le pueda servir a alguien más. ¡Gracias Marc!

Aprovechando este asunto voy a procurar escribir una mini-serie sobre el renderizado de controlas ASP.NET 2.0 y cómo modificarlo, etc... Aunque estos días como se puede comrpobar no he tenido mucho tiempo que digamos y además me voy a Redmond en un par de días, así que no prometo nada sobre tiempos :-(

Archivado en:
Comparte este post:

Comentarios

# Romny said:

Parece ser que http://geks.ms, no cumple con el estandar o de pronto si, me tome el atrevimiento de colocarlo en el validador http://validator.w3.org/y salieron cerca de 167 errores, por que habra pasado, si se supone que este sitio cumple con el standart de xhtml

Tuesday, March 06, 2007 9:59 PM
# Luis Ruiz Pavón said:

Jod.... menuda pu... He tenido una de movidas con los ImageButton y el validador de la leche!!!

Gracias Jose por el post, apuntate 1!!!

Salu2

Wednesday, March 07, 2007 8:50 AM
# Iñigo said:

Ya q estas con lo del renderizado, vas a comentar algo de accesibilidad? :)

Wednesday, March 07, 2007 9:49 AM
# José M. Alarcón Aguín said:

jeje, tú estabas el otro día en Microsoft cuando mi charla y la de los "Herreros" y la accesibilidad ¿verdad?

Menudo agobio nos metieron con lo de la accesibilidad, la verdad.

No, no creo que comente nada del tema de la accesibilidad porque no lo controlo.

Wednesday, March 07, 2007 10:39 AM
# Sergio Tarrillo's Blog -> enhancements said:

FreeTextBox, es un editor html enriquecido para ASP.NET de descarga gratuita. Creo que una imagen...

Sunday, March 25, 2007 7:19 AM
# SergioTarrillo's RichWeblog said:

FreeTextBox , es un editor html enriquecido para ASP.NET de descarga gratuita. Creo que una imagen vale

Sunday, March 25, 2007 7:19 AM
# jtsoft said:

Me ha servido mucho tu artículo. Estoy intentando desarrollar un blog con asp.net y freetextbox y no era capaz de conseguir XHTML válido. Una de las razones era la que tu mencionas en tu artículo, solucionada modificando el archivo web.config.

La otra era que usaba controles label para mostrar el contenido xhtml, que asp.net convertía en etiquetas span del lado del cliente. Solucionado utilizando controles literal.

¿Muchas gracias!

Saturday, April 07, 2007 6:28 PM