Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Differenze tra le View e le pagine ASP.NET

Un primo esempio di vista da analizzare per comprendere meglio le novità rispetto all'approccio delle WebForm
Un primo esempio di vista da analizzare per comprendere meglio le novità rispetto all'approccio delle WebForm
Link copiato negli appunti

Torniamo adesso al view engine predefinito di ASP.Net MVC. Nel seguente listato viene presentata una semplice vista relativa all'azione Index del controller GalleryController del nostro esempio, che si occupa di mostrare a video la lista delle immagini presenti nel database.

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

<%-- Importo i namespace necessari --%>
<%@ Import Namespace="ImageGallery.Models" %>

<%-- Titolo della pagina --%>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
  Le mie immagini
</asp:Content>

<%-- Corpo della pagina --%>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h1 style="margin-bottom: 40px">Le mie immagini</h1>

<p><%= Html.ActionLink("Aggiungi immagine", "Create") %></p>

<%
  // Effettuo il cast per ottenere una lista dalla proprietà Model
  // (di tipo object)
  var images = (List<GalleryImage>)(this.Model);
  
  // Se nella lista sono presenti immagini le visualizzo
  if (images.Count > 0)
  {
%>
    <ul class="gallery">
    <%
      // Stampo la descrizione per ogni immagine
      foreach (var image in images)
      {
    %>
        <li><a href="<%= Url.Action("Detail", new { id = image.ImageId})  %>">
          <img src="/Content/images/<%= Url.Encode(image.FileName + "_t." + image.FileExtension) %>"
               alt="<%= Html.Encode(image.FileName) %>" /></a>
        </li>
    <% 
      }
    %>
    </ul>
<%
  }
  else // Altrimenti mostro un messaggio di errore
  { 
%>
    <p>Nessuna immagine presente nel database.</p>
<% 
  }
%>
</asp:Content>

Ci preoccuperemo di analizzare il codice in dettaglio nelle prossime lezioni. Per ora è importante notare la somiglianza del codice con quello di una pagina ASP.NET tradizionale. La nostra vista, tuttavia, non eredita da System.Web.UI.Page come tutte le pagine WebForms, ma da System.Web.Mvc.ViewPage (visibile nella direttiva Page in alto). Quest'ultima classe aggiunge diverse proprietà interessanti che vedremo tra poco.

Sebbene ViewPage erediti da System.Web.UI.Page non sarà possibile utilizzare molte funzionalità legate a questa classe. In particolare ASP.NET MVC non gestisce alcun tipo di ViewState nelle pagine, per cui tutti i meccanismi di ASP.NET classico che si basano su questa tecnologia, come la maggior parte dei controlli lato server, semplicemente non funzioneranno.

Inoltre le viste MVC non hanno il solito ciclo di vita delle altre pagine e quindi non forniscono supporto ai vari eventi quali Page_Load e Page_Init.

Queste diversità nascono dalla differente organizzazione del codice: mentre in ASP.NET tutte le operazioni, come connessione al database, richiesta dei dati e la visualizzazione di questi ultimi venivano svolte all'interno della pagina, ASP.NET MVC trasferisce tutto il codice applicativo nei controller, lasciando alla vista soltanto l'ultimo compito, ovvero mostrare i dati a video. Questo discorso si estende anche alle master page.


Ti consigliamo anche