Actualización en ASP.NET MVC 3 RC 2 (y una solución a un bug)

Hace poco publicamos la RC 2 de ASP.NET MVC 3. Posteé un montón de detalles sobre ella aquí.

Una de las razones por las que publicamos release candidates es para ayudarnos a encontrar bugs difíciles de encontrar. Hasta ahora no hemos visto muchas incidencias en la RC 2 (lo que es bueno) – aunque hemos visto algunos informes de un bug de cacheado que se producen en dos escenarios:

  • Los parámetros nullables en métodos de acción dan problemas: Cuando tenemos un método de acción controlador con un parámetro nullable (como int? – o un tipo complejo que contiene una propiedad nullable), el parámetro nullable termina siendo siempre null – incluso cuando la petición contiene un valor válido para el parámetro.
  • [AllowHtml] no permite HTML en el binding del modelo: Cuando decoramos una propiedad con el atributo [AllowHtml] (para deshabilitar la protección de inyección de HTML), el binding del modelo sigue fallando cuando se le pasa contenido HTML.

Ambas incidencias están causadas por una optimización de la cache obsesiva que introducimos muy tarde en la RC 2. Esta incidencia será arreglada para la release final de ASP.NET MVC 3. Aquí tenéis una solución para corregirlo hoy.

Solución que podemos usar hoy

Podemos corregir estas incidencias en ASP.NET MVC 3 RC 2 añadiendo una linea de código al manejador del evento Application_Start() del Global.asax:

El código anterior establece la propiedad ModelDataProviders.Current para que use el DataAnnotationsModelMetadataProvider. ESto hace que ASP.NET MVC 3 use una implementación de un provider de metadatos que no tiene una lógica agresiva de cacheado que introducimos al final de la RC 2, y previene las incidencias de cacheado que causaban los errores indicados.

No tenemos que cambiar ningún otro código en neustra aplicación. Una vez que hagamos este cambio las incidencias anteriores desaparecerán. No necesitaréis  tener esta linea de codigo una vez que se publique la versión final de ASP.NET MVC 3 (mantenerla tampoco tendrá ningún problema).

Espero que sirva – y por favor mandadnos cualquier cosa que encontréis.

Scott.

Traducido por: Juan María Laó Ramos.

Artículo original.