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

[ASP.NET vNext] Controles de Enlace a Datos fuertemente tipados–Web Forms no muere.

Hola que tal, tal cual dice el titulo del post, WebForms No Muere, dilucidando algunas dudas sobre si ASP.NET WebForm llegaba a su fin. Escuché  a varios que alguna vez apoyaron bastante a Webforms, criticarlo y hasta satanizarlo, particularmente se que tiene pros y contra, pero aprovecho más sus pros para mi trabajo diario.

Bueno, luego de esa pequeña opinión, veamos una excelente característica que apunta a facilitarnos el desarrollo de nuestras aplicaciones. Seguramente vienen más novedades, las cuales está entregando el Maestro ScottGu’s en su blog, este post es un resumen-traducción de http://weblogs.asp.net/scottgu/archive/2011/09/01/strongly-typed-data-controls-asp-net-vnext-series.aspx

Veamos como se realiza el enlace a datos en las plantillas de los DataControls

ASP.NET Web Forms introduce el concepto de “plantillas”, estas plantillas nos permiten  customizar el contenido de los tag generados por el webcontrol, y típicamente es usado con las expresiones data-binding.

Cuando actualmente utilizamos el data-binding junto a las plantillas, estamos utilizando expresiones lata-bound, es  decir, la unión con los datos se hace en tiempo de ejecución en el momento de el render del control. Por ejemplo, a continuación se utiliza el método helper Eval() para enlazar las propiedades “FirstName” y “LastName” de una lista de objetos enlazados a control de repetición.

<ul>

    <asp:Repeater runat="server" ID="customers">

        <ItemTemplate>

            <li>

                First Name: <%# Eval("FirstName") %><br />

                Last Name: <%# Eval("LastName") %><br />

            </li>

        </ItemTemplate>

    </asp:Repeater>

</ul>

Cuando se lleva a cabo la unión de los datos con posibilidad de actualización es decir “2-way data-binding”, usamos el método helper Bind().

<asp:FormView ID="editCustomer" runat="server" >

    <EditItemTemplate>

        <div>

           First Name:

           <asp:TextBox ID="firstName" runat="server" Text='<%# Bind("FirstName") %>' />

        </div>

        <div>

            Last Name:

            <asp:TextBox ID="lastName" runat="server" Text='<%# Bind("LastName") %>' />

        </div>

        <asp:Button runat="server" CommandName="Update" />

    </EditItemTemplate>

</asp:FormView>

La desventaja de ambos métodos es que las llamadas a eval() y Bind() son en tiempo de ejecución, lo que significa que se pasan como argumentos cadenas de texto (strings) para representar el nombre de las propiedades, lo que se traduce a que no hay  intellisense para los nombres de las propiedades del objeto enlazado, tampoco apoyo a la navegación de código (como ir a la definición), ni menos, la comprobación en tiempo de compilación.

Controles de Datos fuertemente tipados

La próxima versión de ASP.NET proporciona la capacidad para permitir plantillas fuertemente tipadas. En concreto, se ha añadido la posibilidad de declarar el tipo de datos que será bindeado con la plantilla, mediante la nueva propiedad “ModelType”. Al establecer esta propiedad  habrá dos nuevas variantes en el ámbito de las expresiones de enlace de datos en las plantillas: Item y BindItem.

Los desarrolladores pueden usar estas variables en las expressiones de enlace a datos y obtener comprobación en tiempo de compilación e Intellinsense. Por ejemplo, a continuación, se muestra un ejemplo en donde se a seteado la propiedad ModelType en un control <asp:repeater> a un objeto “Customer”. Una vez que esta propiedad ya esta seteada podemos cambiar el codigo Eval(“FirstName”) por Item.FirstName para hacer referencia a la propiedad.

image

Para las expresiones “2-way data-binding”, podemos utilizar la otra variable, BindItem para obtener los mismos beneficios que se mencionaron anteriormente.

<asp:FormView ID="editCustomer" runat="server">

  <EditItemTemplate>

     <div>

       First Name:

          <asp:TextBox ID="firstName" Text='<%# BindItem.FirstName %>' runat="server" />

        </div>

        <div>

         Last Name:

            <asp:TextBox ID="lastName" Text='<%# BindItem.LastName %>' runat="server" />

        </div>

        <asp:Button runat="server" CommandName="Update" />

    </EditItemTemplate>

</asp:FormView>

Y si tenemos un error al escribir el código, inmediatamente vamos a obtener el aviso del error desde el motor de Intellinsense.

image

Un video rápido que muestra estas características en acción:
http://www.asp.net/vnext/videos/aspnet-vnext-videos-strongly-typed-data-controls

Esperemos los siguientes post del Master Scottgu en donde nos presenta estas interesantes novedades.

Saludos!
Chalalo

Posted: 4/9/2011 5:36 por Gonzalo Perez | con 1 comment(s)
Archivado en: ,
Comparte este post:

Comentarios

Chalalo Land ha opinado:

Siguiendo la serie que nos entrega ScottGu sobre las nuevas características que traerá la próxima versión

# September 10, 2011 7:17 AM