Continuiamo la carrellata sulle nuove funzionalità di Visual Studio 11 (vNext) rimanendo anche questa volta in ambito ASP.NET, nello specifico nella funzionalità di binding dei controlli. Fino ad ora per effettuare il binding di un controllo con una sorgente dati era necessario specificare all'interno del codice HTML del controllo una cosiddetta espressione di binding, ovvero una cosa di questo tipo:
<ul> <asp:Repeater runat="server" ID="rptUtenti"> <ItemTemplate> <li> Username: <%# Eval("Username") %><br /> Ultimo accesso: <%# Eval("LastAccess") %><br /> </li> </ItemTemplate> </asp:Repeater> </ul>
Come vediamo le proprietà Username e LastAccess che evidentemente appartengono ad un probabile oggetto User (in questo caso impostato nel code behind) sono scritte come semplici stringhe con tutti i problemi che questo comporta come ad esempio la possibilità di errore nella scrittura del nome della proprietà oltre al fatto che è necessario conoscere a priori tutte le proprietà dell'oggetto. Sarebbe bello se fosse possibile avere l'aiuto dell'IntelliSense anche in questo caso. Ebbene, Visual Studio vNext ci permetterà per l'appunto di usufruire dell'IntelliSense anche in questo caso.
Sarà infatti sufficiente valorizzare la proprietà ModelType del controllo con il nome completo dell'oggetto in binding e quindi nelle espressioni di binding utilizzare la seguente nuova sintassi:
<ul> <asp:Repeater runat="server" ID="rptUtenti" ModelType="MyApp.Utente"> <ItemTemplate> <li> Username: <%# Item.Username %><br /> Ultimo accesso: <%# Item.LastAccess %><br /> </li> </ItemTemplate> </asp:Repeater> </ul>
Quando andremo a scrivere "Item." immediatamente dopo la pressione del carattere punto vedremo apparire la consueta tendina di selezione dell'IntelliSense che ci elencherà le proprietà dell'oggetto User. Nel caso in cui volessimo impostare un binding a due vie (lettura/scrittura) sarà sufficiente utilizzare BindItem al posto di Item.