Come abbiamo visto nella lezione precedente, utilizzare la proprietà Model dichiarata come object ci costringe ad effettuare continuamente cast per ottenere i dati in forma tipizzata.
Fortunatamente ASP.Net MVC mette a disposizione dello sviluppatore la classe ViewPage<TModel> che, grazie ai generics, ci permette di utilizzare Model tipizzati.
Il codice seguente è una riscrittura, che fa uso dei generics, di quello appena visto per l'azione Index (attenzione soprattutto alla direttiva Page in alto):
Vista relativa all'azione Index di GalleryController (utilizzando la classe generica ViewPage<TModel>)
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<List<ImageGallery.Models.GalleryImage>>" %>
...
<%-- Corpo della pagina --%>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
...
<%
// Se nella lista sono presenti immagini le visualizzo
if (this.Model.Count > 0)
{
%>
<ul class="gallery">
<%
// Stampo la descrizione per ogni immagine
foreach (var image in this.Model)
{
%>
...
<%
}
%>
</ul>
<%
}
else // Altrimenti mostro un messaggio di errore
{
%>
<p>Nessuna immagine presente nel database.</p>
<%
}
%>
</asp:Content>
Il codice, oltre ad essere molto più pulito, sarà anche più veloce da scrivere ed eseguire. Per questi motivi, il consiglio è di utilizzare viste con Model tipizzato quando possibile.
Se vuoi aggiornamenti su .NET inserisci la tua email nel box qui sotto: