Este é o segundo post de uma série de posts que estou escrevendo sobre a próxima versão da ASP.NET ( ASP.NET vNext ).
Os
próximos lançamentos do .NET e Visual Studio ( vNext ) incluem vários
novos e ótimos recursos e capacidades. Com a ASP.NET vNext você vai ver
um monte de melhorias realmente emocionantes em formulários da Web (
Web Forms ) e MVC - assim como no núcleo da base de
código da ASP.NET, no qual estas tecnologias são baseadas.
O post de hoje é o
primeiro de alguns posts que vou escrever para falar sobre algumas das
melhorias que estão chegando para Web Forms. O post de hoje cobre o
novo suporte que estamos introduzindo para controles de dados fortemente
tipados.
Algumas informações sobre Modelos/Templates para Controle de Dados
A
ASP.NET Web Forms introduziu o conceito de "templates" ( modelos )
começando com o primeiro lançamento. Templates permitem que você
personalize (ou substitua) a marcação HTML emitida por controles do
servidor, e são normalmente utilizados em expressões de data-binding (
ligação/vinculação de dados ).
Hoje, quando você usa data-binding
dentro de um template, você usa expressões late-bound (
vinculação-tardia ) para ligar os dados. Por exemplo, a seguir nós
estamos usando o método de ajuda Eval() para vincular as propriedades
"Name" e "LastName" de uma lista de objetos ligada a um controle do tipo
repeater:
<ul>
<asp:Repeater runat="server" ID="customers">
<ItemTemplate>
<li>
First Name: <%# Eval("FirstName") %><br />
Last Name: <%# Eval("LastName") %><br />
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
Hoje, quando você realiza 2-way data-binding ou ligação de dados em 2 vias (leitura/escrita), você usa o método de ajuda Bind() da seguinte forma:
<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>
Uma
desvantagem das abordagens mostradas acima é que as chamadas para Eval() e Bind()
são late-bound - o que significa que você passa strings para
representar os nomes das propriedades. Isto significa que você não terá
Intellisense para os nomes dos membros, nem suporte à navegação de
código (como Go To Definition/Ir para Definição), nem suporte para
verificação do código no tempo de compilação.
Controles de Dados Fortemente Tipados
A
próxima versão da ASP.NET fornece a capacidade para habilitar templates
de dados fortemente tipados. Especificamente, nós adicionamos a
capacidade de declarar a qual tipo de dado um controle vai ser ligado,
por meio de uma nova propriedade chamada "ModelType" nos controles de
dados. Quando esta propriedade é definida, duas novas variáveis serão
geradas no escopo das expressões de ligação de dados do modelo: Item e
BindItem.
Os desenvolvedores podem usar essas variáveis em
expressões de data-binding obtendo Intellisense completa e suporte para
verificação do código no tempo de compilação. Por exemplo, a seguir nós
setamos a variável ModelType em um controle <asp:repeater> para
que ela seja um objeto "Customer". Uma vez feito isso, podemos
utilizar Item.FirstName ao invés de Eval ("FirstName") para referenciar a
propriedade.
Nós obtemos intellisense completa para o código no Visual Studio quando passamos a utilizar a variável Item:

No
caso de expressões 2-way data-binding (leitura/escrita), também podemos
agora usar a variável BindItem e obter os mesmos benefícios fortemente
tipados:
<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>
Se
cometermos um erro durante a digitação, vamos obter um feedback
instantâneo do motor da IntelliSense informando que algo está errado:

Vídeo rápido do Recurso
Damian Edwards tem um ótimo video de 90 segundos que mostra o uso de controles de dados fortemente tipados em ação. Você pode vê-lo aqui.
Sumário
Suporte
para controles de dados fortemente tipados, é um pequeno, mas bom
recurso, que torna o trabalho com expressões de vinculação/ligação de
dados mais fácil e mais limpo. Nos próximos posts cobrirei também
algumas das melhorias mais substanciais no que diz respeito a dados para
Web Forms na ASP.NET vNext que tornam a vinculação de dados e edição de
dados ainda mais poderosa e fácil.
Espero que ajude,
Scott
P.S. Além do blog, eu uso o Twitter para disponibilizar posts rápidos e para compartilhar links. Meu apelido no Twitter é: @scottgu
Texto traduzido do post original por
Leniel Macaferi.