EnableEventValidation en GridView

Escribo rápidamente este post para explicaros un problema que me he encontrado hoy desarrollando una aplicación web ASP.NET 2.0 con AJAX. Resulta que tengo GridView que muestra una lista de ficheros, y donde al lado de cada uno de ellos aparece un icono para eliminarlos. Al hacer click sobre el icono, se debe eliminar el fichero asociado, y se debe volver a cargar el GridView con la lista actualizada.

Ficheros

Pues ejecutando la acción de borrado, me aparece el siguiente mensaje de error:

“Argumento de devolución o de devolución de llamadas no válido. La validación de eventos se habilita usando <pages enableEventValidation="true"/> en la configuración o <%@ Page EnableEventValidation="true" %> en una página. Por motivos de seguridad, esta característica comprueba que los argumentos pasados a eventos de devolución o de devolución de llamadas se origina desde el control del servidor que inicialmente los procesó. Si los datos son válidos y son los que se esperaba, utilice el método ClientScriptManager.RegisterForEventValidation para registrar los datos de devolución o de devolución de llamadas para su validación.”

Buscando en la web encontré múltiples soluciones, sin que ninguna sea suficientemente clara. De hecho, en muchos casos se comenta que la mejor opción es modificar la página o el fichero web.config y asignar el valor true al atributo enableEventValidation. Nada más lejos de la realidad…

El problema se produce porqué el GridView se intenta cargar de nuevo con los datos provenientes de la consulta en el evento Page_Load, sin contemplar la posibilidad de si se proviene o no de un PostBack. En definitiva, la solución consiste en cargar los datos del GridView sólo si es la primera vez que accedemos a la página:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
Handles Me.Load
If Not Page.IsPostBack Then
MostrarResultadoBusquedaFicheros()
End If
End Sub

Así que nos os compliquéis con soluciones difíciles si tenéis este problema con el GridView.
 
¡Espero que os sirva!

Tags: , , , ,

Microsoft DevLabs

Actualmente estoy finalizando un proyecto desarrollado con ASP.NET 2.0 y AJAX, en el que me he encontrado multitud de problemas, pero sobre todo, me ha ayudado a comprender la tecnología AJAX, como aplicarla y qué ventajas e inconvenientes presenta. De hecho, la aplicación empezó cubriendo unas necesidades, que a medida que avanzaba el proyecto, se fueron ampliando. En definitiva, la aplicación se ha convertido en un conjunto de páginas con algunos de los controles presentes en el AJAX Control Toolkit (conjunto de controles con funciones predefinidas y que ayudan a mejorar la usabilidad de las aplicaciones web), pero que se cargan demasiado lentamente.

Investigando un poco descubrí Doloto, o lo que es lo mismo, Download time optimizer for Web 2.0 applications. Doloto es una aplicación desarrollada por Microsoft que permite reducir el código de las aplicaciones que usan AJAX hasta un 40%, permitiendo que la página inicial de la aplicación se cargue entre un 30% y un 40% más rápido de lo que lo hace actualmente, y en definitiva, mejorando el rendimiento de la aplicación.

Doloto 

A partir de la web del producto (totalmente gratuïto), descubrí la página DevLabs de Microsoft, donde se presentan productos para mejorar los procesos de desarrollo de software basados en su tecnología. Además de Doloto presentan otros proyectos interesantes como Small Basic (un versión muy reducida de Visual Basic destinada a aquellos que quieran empezar a programar), o PEX (herramienta de automatización de pruebas).

¡Espero que os sirva!

Tags: , , , , ,

¿ASP.NET + AJAX o Silverlight 3?

Durante este mes de Agosto he estado desarrollando una nueva aplicación de gestión para llevar a cabo el mantenimiento de una flota de vehículos. Antes de empezar el desarrollo como tal estuve analizando las distintas tecnologías web con las que podía afrontar el proyecto.

Yo ya tenía experiencia en el desarollo con ASP.NET y AJAX, aunque la experiencia no ha sido del todo positiva, debido a los tiempos de respuesta en la renderización de las páginas y de los controles que ésta contiene (usé el AJAX Control Toolkit para ofrecer una buena experiencia de usuario), además de la velocidad de la red interna del cliente.

La alternativa a este entorno ha sido el uso de Silverlight 3, de reciente aparición, y con sustanciales mejores respecto a versiones anteriores. Mediante Silverlight creo que se puede ofrecer una buena experiencia de usuario, con unos de tiempo de respuesta fantásticos (obviamente, porqué la aplicación se ejecuta en el ordenador del cliente, y por este motivo debemos instalarnos previamente el plugin).

Ciertamente se ha vendido Silverlight como un buen entorno para desarrollar aplicaciones con un componente visual muy importante, pero sin tener en cuenta las aplicaciones de negocio (en Inglés, LOB o Line of Business applications). En este interesante artículo en inglés encontrareis una comparativa con las ventajas e inconvenientes que tiene esta plataforma.

En la red ya empiezan a circular las primeras aplicaciones de negocio basadas en Silverlight y que se pueden descargar libremente para analizarlas y comprobar todo su potencial (aunque las que os adjunto estén hechas con Silverlight 2).

¿Y que hay de la parte de acceso a datos? ¿Debemos utilizar Servicios Web como hasta el momento con las versiones anteriores? ¡Pues no! Gracias a .NET RIA Services podremos acceder a datos como si estuviesemos programando una aplicación ASP.NET clásica. En el siguiente post os explicaré de que va esto…

¡Espero que os sirva!

PD: Si alguien cree que me he equivocado al elegir la tecnología, o simplemente quiere comentar algo, por favor, ¡que no dude en decirlo!

Tags: , , ,