Master page, creare un layout con Visual Studio



L'utilizzo di un layout comune a tutte le pagine di un sito o comunque distinto per aree è una prassi abbastanza consolidata. Per questo è necessario definire il layout in una pagina base per poter poi cambiare il solo contenuto dinamico in tutte le altre pagine; questo concetto in ASP.NET è supportato dalle pagine master (master page). Nel progetto base è presente una pagina chiamata site.master che contiene il layout su cui è basato tutto il sito; la parte più importante è la seguente:

<div class="main">
  <asp:ContentPlaceHolder ID="MainContent" runat="server"/>
</div>

Il tag asp:ContentPlaceHolder identifica un controllo ASP.NET, ovvero un componente capace di generare una parte di HTML nella pagina; in questo specifico caso il controllo non genera nulla, ma stabilisce il punto dove le pagine figlie andranno ad inserire il loro contenuto. Grazie alle master page è possibile quindi creare un layout base specificando dove le pagine figlie andranno ad inserire il loro contenuto.

Nella site.master sono presenti due placeholder, il primo è quello del contenuto ed è piazzato nel div principale mentre il secondo è posizionato nel tag head e garantisce la possibilità per le pagine figlie di inserire del contenuto nell'header della pagina.

Il restante codice della pagina master serve a renderizzare le parti comuni, come ad esempio la sezione in alto a destra, preposta alla gestione del login.

<div class="loginDisplay">
  <asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false">
    <AnonymousTemplate>
      [ <a href="~/Account/Login.aspx" ID="HeadLoginStatus" runat="server">Log In</a> ]
    </AnonymousTemplate>
    <LoggedInTemplate>
      Welcome <span class="bold"><asp:LoginName ID="HeadLoginName" runat="server" /></span>!
      [ <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out"  LogoutPageUrl="~/"/> ]
    </LoggedInTemplate>
  </asp:LoginView>
</div>

In questo caso si è utilizzato il controllo ASP.NET chiamato LoginView, che permette di visualizzare porzioni di codice HTML differenti sulla base dello stato del login dell'utente; nell'esempio viene infatti mostrato un link alla pagina di login per gli utenti non loggati ed un messaggio di benvenuto per chi invece ha effettuato un login corretto. Assieme al messaggio di benvenuto è presente un controllo LoginStatus che permette di effettuare il LogOut. L'unico altro controllo ASP.NET presente è un controllo chiamato Menu che si occupa di generare il menu di navigazione.

La home page del sito, chiamata default.aspx, è cosi definita:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="AspnetWfIntro._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<!-- qui mettiamo le definizioni come il titolo della pagina o le librerie JS da caricare -->
</asp:Content>

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
  <h2>Benvenuto in ASP.NET!</h2>
  
  <p>Per saperne di più su ASP.NET visita <a href="http://aspnet.html.it" title="ASPNet.HTML.it">ASPNet.HTML.it</a>.</p>

</asp:Content>

L'anatomia di una pagina ASP.NET comprende sempre come primo tag la direttiva <%@ page > che contiene le impostazioni specifiche per la pagina corrente.

In questo caso l'impostazione MasterPageFile permette di specificare la master page che si vuole utilizzare, di seguito troviamo altre opzioni che indicano al motore di ASP.NET in che file si trova il codice della pagina, etc.

Tutto il contenuto specifico della pagina è quindi inserito in un controllo di tipo asp:Content, la cui proprietà ContentPlaceHolderID permette di scegliere il placeholder dove il contenuto verrà inserito.

Ultimi articoli ASP.Net

LINQ e la trappola della 'deferred execution'

Una "trappola" in cui si può incappare utilizzando il risultato di...

C#, le Custom Type Conversion

Conversioni personalizzate tra classi, creare metodi particolari per...

Introduzione a Entity Framework

Il framework ORM messo a disposizione da .NET

Repeater: visualizzare un feed RSS

Utilizzare il controllo XMLDataSource e sfruttare il metodo XPath()...

Repeater, il server control "semplice"

Cos'è e come funziona il controllo Repeater

Altri articoli

Guide ASP.Net

Guida ASP.NET MVC Best Practices

Un workflow dettagliato e ricco di suggerimenti pratici per...

Guida ASP.NET Starter Kit

Un modo semplice per imparare ad utilizzare le tecnologie Microsoft...

Guida Visual Studio 2010

L'ambiente di sviluppo di riferimento per sviluppare applicazioni su...

Altre guide

Newsletter @Microsoft Dev

Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Progettazione database

11 Maggio 2012 a Milano
Disponibilità: 6 Posti

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto