[ASP.NET vNext] Strongly Typed Data Controls, No más Eval y Bind!

Siguiendo con la serie de post que Scott Guthrie está escribiendo en su blog, seguro que los que habéis trabajado con ASP.NET conocéis fijo las templates de los controles de ASP.NET ¿verdad? y sino pues las templates de controles de datos basicamente nos permiten modificar o customizar el HTML que emiten al cliente usando expresiones de databinding como Eval y Bind, algo como esto:

Eval

Para solo mostrar la información hacemos uso de Eval One-Way-Binding

<asp:GridView ID="grv_Mensajes" runat="server" AutoGenerateColumns="False" AllowPaging="True">

   <Columns>

      <asp:TemplateField>

         <ItemTemplate>   

            <asp:Label ID="lblTitulo" runat="server" Text='<%# Eval("Titulo") %>'></asp:Label>  

         </ItemTemplate>

      </asp:TemplateField>      

      <asp:TemplateField>

         <ItemTemplate>   

            <asp:Label ID="lblDescripcion" runat="server" Text='<%# Eval("Descripcion") %>'></asp:Label>  

         </ItemTemplate>

     </asp:TemplateField>

   </Columns>

</asp:GridView>

Bind

Para mostrar y modificar la información usamos Bind Two-Way-Binding

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

    <EditItemTemplate>

        <div>

            Título:

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

        </div>

        <div>

            Descripción:

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

        </div>

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

    </EditItemTemplate>

</asp:FormView>

¿Cual es el problema de esto?

Hay 2 problemas con esto desde mi punto de vista:

  1. No es fácil recordar como se llaman todas las propiedades de nuestras clases o entidades.
  2. En la vista HTML no disponemos de Intellisense para los Data Controls y es posible que al escribir el nombre del campo mal, en tiempo de ejecucuión nos salte una excepción.

Para evitar esto y facilitarnos un poco más la vida, en la próxima versión de ASP.NET tendremos los Strongly Typed Data Controls

eval

Como se aprecia en la imagen haciendo uso del atributo ModelType le indicamos al control cual será la clase de nuestro modelo con la que vamos a trabajar y ya tenemos disponible en el intellisense todos los campos. El Item es equivalente al método Eval

El equivalente al método Bind es BindItem

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

    <EditItemTemplate>

        <div>

            Título:

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

        </div>

        <div>

            Descripción:

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

        </div>

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

    </EditItemTemplate>

</asp:FormView>

Si nos equivocamos en el nombre del campo, en tiempo de diseño el Intellisense de Visual Studio nos avisará:

error

Mola! ¿no?

Un saludo.

Un comentario en “[ASP.NET vNext] Strongly Typed Data Controls, No más Eval y Bind!”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *