Nuevo soporte para datos dinámicos en ASP.NET

La CTP de ASP.NET 3.5 Extensions que publicamos la semana pasada contiene un montón de nuevas características.

Una de las más interesantes es una que llamamos "ASP.NET Dynamic Data Support". En pocas palabras nos permite crear rápidamente aplicaciones web dirigdias por datos (data driven) basándose en modelo de objetos de LINQ to SQL (y en un futuro sobre LINQ to Entities) - y opcionalmente nos permite hacer esto sin tener que crear ninguna página manualmente.

La mejor forma de ver esto en acción es ver el video de 17 minutos de David Ebbo

También podéis seguir los pasos para introduciros en el uso del soporte de datos dinámicos:

Paso 1: Crear un sitio ASP.NET Dynamic Data:

Una vez que tengamos intalado ASP.NET 3.5 Extensions, podemos usar VS 2008 o la versión gratuita Visual Web Developer 2008 Express para crear un sitio web o una aplicación web con el soporte de datos dinámicos habilitado:

Esto creará un sitio nuevo con algunos archivos template, junto a estilos CSS que podremos usar para personalizar el look&feel:

Paso 2: Añadir un modelo de datos de LINQ to SQL al sitio

LINQ to SQL es un orm que viene con .NET 3.5, y nos permite modelar bases de datos con clases de .NET. Podemos consultar la base de datos usando LINQ, y actualizar/insertar/borrar datos. LINQ to SQL soporta completamente transacciones, vistas, y procedimientos almacenados. También permite integrar validación de datos y lógica de negocio en el modelo de datos de forma muy facil.

La forma más sencilla de empezar con un sitio ASP.NET Dynamic Data es añadir un modelo LINQ to SQL a nuestro proyecto (clic derecho->add new item-> LINQ to SQL Classes). Esto nos mostrará el diseñador de LINQ to SQL. Arrastramos las tablas que queramos del explorador de servidores para definir las clases necesarias (con relaciones):

Paso 3: Habilitar Templates Dinámicos en nuestro proyecto.

Por defecto, los proyectos ASP.NET Dynamic Data tienen integrado el soporte para crear vistas de modelos de datos de LINQ to SQL y LINQ to Entities. Estos proyectos incluyen páginas template y user controls que pueden crear automáticamente los escenarios de navegacion/edición/selección/borrado dinámicamente para la interfaz de usuario en tiempo de ejecución, basándose en los modelos de LINQ to SQL o LINQ to Entities que añadimos al proyecto.

Para habilitar est soporte, abrimos el web.config, buscamos la sección "dynamicData" y ponemos el atributo "enableTemplates" a true.

Nota: esta características está desactivada por defecto por temas de seguridad (queremos que seáis vosotros los que la activen).

Nota: Como véis arriba, la sección de datos dinámicos tiene soporte para el mapeo de URLs que nos permitirá personalizar las URLs que mostrarán estas páginas.

Paso 4: Ejecutar el sitio.

Pulsamos F5 para ejecutar el proyecto. Por defecto se nos mostrará la página Default.aspx que lista todas las tablas de nuestro modelo:

Nota: la página default.aspx está en el proyecto. Si no os gusta cómo está diseñada, sólo tenéis que abrirla y diseñarla como queráis.

Haciendo clic en cualquier nombre de la lista de tablas, nos llevará a una página dinámica que lista todos los datos de la tabla:

Estas páginas crean una navegación de datos por defecto que incluyen el soporte para la paginación y edición (y están con AJAX!!!).

Estas páginas infieren automáticamente las relaciones que haya entre las tablas y los objetos relacionados:

Las páginas de datos también muestran las relaciones entre los objetos y muestran a los usuarios una forma fácil de navegar entre ellos. Por ejemplo, fijáos en la columna de Categorías de los productos que nos permite ir a los detalles de la categoría de un producto:

Estas páginas también soportan la selección, edición y borrado. Fijáos cómo en modo inline nos muestra los nombres de las claves ajenas (permitiendonos modificar la categoría y seleccionar otra de una lista desplegable, en lugar de tener que poner el número del CategoryID):

Todo esto funciona sin tener que crear ningún .aspx o escribir ningún código. Todas las webs están siendo creadas dinámicamente a partir del modelo LINQ to SQL o LINQ to Entities que hayamos añadido.

Paso 5: Personalizando el sitio.

Teniendo toda esta funcionalidad funcionando a partir del modelo de datos, es genial para crear de forma rápida sitios web. Una vez que tenemos esto funcionando, podemos personalizarlo - tanto las reglas de validación y negocio, cómo la interfaz de usuario.

Podemos añadir un modelo estándar de LINQ to SQL y sus reglas de validación que hayamos definido nosotros. Las páginas dinámicas funcionarán de acuerdo a esa lógica, generando los mensajes de error apropiados y validaciones en la interfaz de usuario necesarias.

También podemos personalizar el diseño de las páginas de la forma que queramos. Estos proyectos nos permite personalizar el look&feel por defecto de cada página, y de las columnas que usamos en el sitio. Podemos personalizarlo a través de los archivos que se han añadido por defecto al sitio, en el directorio "/App_Shared":

 

Ahora podemos añadir cualquier control ASP.NET en la página. Podemos usar los nuevos controles de datos dinámicos de ASP.NET 3.5 Extensions. De manera que podremos personalizar el look&feel de las páginas -usando el mismo modelo de datos para inferir la relaciones y el comportamiento de estas.

Para aprender más:

Hemos visto sólo un poco por encima los escenarios y capacidades que nos permiten este tipo de proyectos. Para aprender más:

  1. Ved el vídeo de David
  2. Hechadle un ojo a ASP.NET Dynamic Data QuickStarts
  3. Suscribíos a los blogs de David Ebbo, Scott Hunter, y Marcin Dobosz
  4. Visitad el foro ASP.NET Dynamic Data Forum para las preguntas.

Para aprender más sobre LINQ to SQL y cómo podemos usarlo para crear clases del modelo de datos, leed los post que escribí sobre LINQ to SQL:

  • Parte 1: Introducción a LINQ to SQL
  • Parte 2: Definiendo el modelo de datos.
  • Parte 3: Consultando la base de datos
  • Parte 4: Actualizando la base de datos.
  • Parte 5: Enlazar controles de interfaz de usuario con el ASP:LinqDatSource
  • Parte 6: Obtener datos con procedimientos almacenados.
  • Parte 7: Actualizando la base de datos con procedimientos almacenados.
  • Parte 8: Ejecutar consultas SQL personalizadas.
  • Parte 9: Uso de expresiones LINQ personalizadas con el control <asp:LinqDatasource>
  •  También podéis ver los videos sobre LINQ con la temática de "How do I?", del sitio www.asp.net aquí.

    Espero que sirva.

    Scott.

    Traducido por: Juan María Laó Ramos. Microsoft Student Partner

    Artículo original.

    Un pensamiento en “Nuevo soporte para datos dinámicos en ASP.NET

    1. Nando

      El artículo sobre Datos Dinámicos en ASP.NET es muy interesante. Es algo que íba buscando desde hace tiempo para una aplicación que estoy haciendo.
      El problema que me surge es que no me aparece exactamente como muestras en tus imágenes. Los distintos CSS no me aparecen, la página ListDetailsTemplate.aspx tampoco la tengo y, cuando intento configurar el web.config no me aparece la sección system.web.extensions y, si intento añadir la sección dynamicData, me da un error ya que ni siquiera la muestra como una opción a añadir.

      Agradecería cualquier ayuda que me permita solucionar el problema. Me interesa mucho poder implementar esta opción.

      Gracias de antemano.

      Un saludo.

      Responder

    Deja un comentario