Chalalo Land

Tecnologías ASP.NET y un poco Más

Contacto


 Si quierer cooperar, yo feliz, muy agradecido :)

De donde me Visitan?

Locations of visitors to this page

Generic Content

Si te gustaron los articulos, y te animas te estaría muy agradecido!


Recent Posts

Tags

Community

Blogs de MVP

Amigos Geeks

Blogs Imperdibles

GODS

Archives

Email Notifications

AJAX Functionality en ASP.NET 4.0 – Parte 1/5

Hola que tal? en esta serie de artículos voy a estar “traduciendo” de documento “ASP.NET 4.0 and Visual Studio 2010 Web Development Overview”. Muchos cambios cool vienen para ASP.NET 4.0, voy a partir por algunos que me son más emocionantes (aunque todos lo son!)

ahí vamos…

La funcionalidad de AJAX dentro de ASP.NET 4.0 permite nuevos escenarios de programación del lado del cliente para las páginas y componentes desarrollados que permiten interactuar con datos desde el servidor con notación JSON  para ser renderizados como HTML de una manera altamente eficiente. Para habilitar estos escenarios, ASP.NET 4.0 incluye las siguientes características:

  • Plantillas renderizables del lado del cliente
  • Instanciación declarativa de los controles  y comportamientos del lado del cliente
  • Live Data Binding
  • Uso del patrón observador con tipos Javascript
  • Una clase AdoNetServiceProxy para el la interacción con ADO.NET Data Services del lado del Cliente.
  • Un control del lado del cliente llamado DataView para la unión de los datos con los componentes UI
  • Clases DataContext y AdoNetDataContentext para la interacción con Servicios Web.
  • Librerías de ASP.NET AJAX refactorizadas.

Client Templates Rendering.

En un desarrollo basado en el lado del cliente, las plantillas son la forma más manejable para crear la UI. ASP.NET 4.0 incluye un nuevo motor de plantillas para el desarrollo centrado en el cliente que cumple con los siguientes requerimientos:

  • Rendimiento -  El motor debe ser capaz de renderizar un número de ítems típico usando una plantilla razonablemente compleja antes que los usuarios perciban alguna interrupción en su interacción con la aplicación.
  • Simplicidad – La sintaxis a utilizar con las plantillas debe ser legible y debe estar optimizado para la mayoría de los escenarios comunes, llamados one-way/one-time binding.
  • Lenguaje – Las plantillas deben soportar expresiones del lenguaje para ir más allá de los casos mas sencillos. Las expresiones del lenguaje deben ser con sintaxis familiares , idealmente sintaxis Javascript.
  • Código y Marcas  Interceptadas – Debe ser posible realizar renderizado condicional o bucle sobre marcas utilizando el código HTML que lo rodea.
  • Compatible XHTML  - Las plantillas deben ser compatibles con XHTML.
  • Componentes – Cuando se usa la sintaxis de las plantillas, el desarrollador debe poder instanciar los controles del lado del cliente así también como  los comportamientos que se atacharan a los controles HTML en la página o con las plantillas.

Ejemplo de Plantilla

El siguiente ejemplo muestra una plantilla del lado del cliente típica que se puede crear usando ASP.NET 4.0

<ul id="myTemplate" class="sys-template"
    sys:attach="dataview" >
     <li>
        <h3>{{ Name }}</h3>
        <div>{{ Description }}</div>
    </li>
</ul>

El atributo class del atributo ul esta marcado como “sys-template”, el cual es una convención que se utiliza para ocultar la plantilla inicial del usuario. Se debe definir esta clase en el CSS como {display:none;}.

Cuando la plantilla se muestra, tiene un elemento de datos como contexto. Campos o Propiedades pueden ser incluidos en la plantilla de marcas mediante el uso de las marcas {{}}} - por ejemplo, {{Name}}, si es que el elemento de datos tiene un campo Nombre. Estas expresiones pueden estar situadas en cualquier lado en un contexto de texto, o se puede usar como el valor de un atributo. Además de los campos y propiedades, la expresión también puede contener bloques de JavaScript cualquier expresión la cual que puede ser evaluada como una cadena.

Se puede configurar eventos DOM utilizando el método $AddHandler. En el DOM, los atributos de los elementos (como por ejemplo, onclik=method) funcionan con las plantillas.

Instanciar una plantilla mediante el control DataView

La forma más conveniente de usar plantillas de cliente en ASP.NET 4.0 es a través del control DataView. El contenido del control DataView es usado  como una plantilla para renderizar los items de datos (registros) que provee el control. Si se establece la propiedad del  control de datos del DataView como  un array, la plantilla es redenrizada una vez por cada ítem en el arreglo. El control DataView se une a datos en vivo (live Binding), lo que significa que el control se actualiza automáticamente cuando se modifica la información en el origen, sin la necesidad de hacer rebind. Esto proporciona una dinámica impulsada por datos de la interfaz de usuario en el navegador. El siguiente ejemplo muestra el de manera declarativa de un control DataView que se une a un conjunto llamado imagesArray.

<body xmlns:sys="BLOCKED SCRIPTSys"
  xmlns:dataview="BLOCKED SCRIPTSys.UI.DataView"
    sys:activate="*">

    <ul sys:attach="dataview" class="sys-template"
        dataview:data="{{ imagesArray }}"    >
        <li>
            <h3>{{ Name }}</h3>
            <div>{{ Description }}</div>
        </li>
    </ul>
</body>

Instanciar Plantillas mediante código

Además, se puede crear plantillas compiladas desde código usando la clase Sys.UI.Template, como se muestra en el siguiente ejemplo:

var t = new Sys.UI.Template($get("myTemplate"));

El constructor toma el elemento de la plantilla como argumento. A continuación, se puede hacer una plantilla compilada en el DOM, llamando su método instantiateIn HTML y especificando un contenedor y un ítem de datos (data ítem)  como contexto. El siguiente ejemplo muestra cómo hacer esto.

t.instantiateIn(
    $get("targetContainer"), 
    {
        Name: "Name",
        Description: "Description"
    }
);

Usando las Pseudo-columnas en las Plantillas

Además de proporcionar acceso a los campos y las propiedades de los ítems de datos, el motor de renderizado de la plantilla también proporciona acceso a los  pre-definidos "pseudo-columnas", como el $index y $dataItem. Estas pseudo-columnas le dan acceso a los valores desde motor de renderizado en tiempo real. Puede utilizar las pseudo-columnas  de la forma que se  utiliza cualquier variable de JavaScript en la plantilla instanciada. El primer ejemplo aplica un css diferente al elemento div para marcar los elementos alternativos que son dibujados por el control Dataview. El segundo ejemplo pasa la pseudo-columna $dataItem, el cual representa los datos del registro actual, a una función llamada nameConvert para ser procesada.

<div class:alternateitem=”{{$index%2 == 1}}”>

<span>{{nameConvert($dataItem)}}</span>

Incorporando Código dentro de las Plantillas para usar los atributos code:if, code:before, y code:after

Se puede agregar los nuevos atributos declarativos code:if, code:before, y code:after para cualquier elemento DOM dentro de una plantilla con el fin de que el elemento condicional (code:if) o para renderizar según el código antes (code:before) o después (code:after) el elemento. El siguiente ejemplo muestra como usar el atributo  code:if para renderizar un elemento hr como un separador entre ítems. El atributo code:if usa el valor de la pseudo-columna para asegurarse que el elemento hr es renderizado solo entre ítems, y no antes  del primero o después del último elemento.

<ul id="myTemplate" class="sys-template">
     <li>
        <hr code:if="$index!==0" />
        <h3>{{ Name }}</h3>
        <div>{{ Description }}</div>
    </li>
</ul>

Instanciando Comportamientos y controles declarativamente

ASP.NET 4.0 introduce una forma declarativa para crear una instancia del control y comportamientos del lado del cliente  y adjuntarlos a los elementos HTML. Las marcas declarativas se logra sin añadir nuevos elementos HTML, simplemente por la inclusión de nuevos atributos namespaced los cuales son compatibles con XHTML.

Continua con la siguiente entrega… (mañana)

Saludos,
Gonzalo

Posted: 20/7/2009 7:06 por Gonzalo Perez | con 2 comment(s) |
Comparte este post:

Comentarios

Jean-Luc ha opinado:

Hola Gonzalo,

Tu articulo es muy interesante y se nota que te manejas bien en el tema. Por lo meno no te puedo contradecir en ningun punto :-)

Mi sugerencia es de tratar de "vulgarizar" los temas para los comunes mortales que no tenemos tu nivel :-)

Me explico: sería bien de mostrar con un ejemplo de la "vida real" como se hace las cosas ahora con .NET Framework 2.x o 3.x y como se podra cambiar con .NET Framework 4.x y cuales serían las ventajas (y desventajas).

El "Client Templates Rendering" me parece interesante pero en lo personal me cuesta entender mas precisamente como utilizarlo.

# July 21, 2009 3:54 PM

Gonzalo Perez ha opinado:

Si, tienes razon, lo que pasa es que esta es la traducción del documento, voy a subir ejemplos de la vida real :)

# July 21, 2009 6:33 PM