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

Master Page e Viste Parziali

Gestire template e porzioni di pagina in modo simile a master page e user control
Gestire template e porzioni di pagina in modo simile a master page e user control
Link copiato negli appunti

Anche con MVC è infatti possibile, come avviene nel codice appena visto, utilizzare il meccanismo delle master page per dividere il codice in pagine di tipo padre/figlio. Oltre che all'interno della vista, possiamo assegnare un master anche dal codice del controller, utilizzando un altro overload del metodo View:

public ViewResult Index()
{
  // Estraggo la lista delle immagini dal database
  GalleryDataContext context = new GalleryDataContext();
  List<GalleryImage> images = context.GetImages();
  
  // Forzo l'associazione tra la vista Index e la master page Site.master
  return View("Index", "Site.master", images);
} 

Viste parziali

Oltre alla viste normali ed a quelle master, rivestono un ruolo particolarmente importante le viste parziali. Queste sono viste particolari, che non rappresentano una pagina intera ma soltanto una parte. In un certo senso ricordano gli user control di ASP.NET in quanto sono molto utili per elementi che si ripetono invariati su più pagine, come ad esempio un menu laterale o un form di login.

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%
  if (Request.IsAuthenticated) {
%>

  Welcome <%= Html.Encode(Page.User.Identity.Name) %>!
  [ <%= Html.ActionLink("Log Off", "LogOff", "Account") %> ]

<% } else { %> 

  [ <%= Html.ActionLink("Log On", "LogOn", "Account") %> ]

<% } %>

Il codice precedente è una vista parziale (chiamata "LogOnUserControl.ascx") che mostra un messaggio di benvenuto nel caso in cui l'utente sia autenticato o un link alla pagina di login nel caso in cui non lo sia.

L'estensione del file è la stessa degli user control (.ascx), ma, come per le viste, anche in questo caso cambia la classe da cui la pagina deriva: non più System.Web.UI.UserControl ma System.Web.Mvc.ViewUserControl.

Le viste parziali possono essere salvate in cartelle diverse all'interno del progetto, a seconda della visibilità che vogliamo dargli. Un vista parziale salvata all'interno della cartella Views/Shared sarà accessibile da tutte le viste della nostra applicazione. Nel caso in cui volessimo limitare l'accesso alle sole viste di un controller specifico, sarà sufficiente salvare la nostra partial view nella cartella riferita a quel controller. Il WebForm ViewEngine si occupa automaticamente della ricerca dei files necessari all'interno delle cartelle.

Il codice in-line, cioè racchiuso tra i tag <% e %> , è la tipologia di codice prevalente all'interno delle viste, al contrario di quanto accadeva per WebForms, dove è preferibile invece demandare le operazioni sui dati da visualizzare al meccanismo dei controlli lato server e del "code behind".

Per richiamare una vista parziale (partial view) all'interno di altre viste possiamo utilizzare l'helper Html.RenderPartial in questo modo:

<% Html.RenderPartial("nomeVistaParziale"); %>

Ti consigliamo anche