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

Master page, creare un layout con Visual Studio

Creare le struttura delle pagine sfruttando i componenti di ASP.NET 4.0
Creare le struttura delle pagine sfruttando i componenti di ASP.NET 4.0
Link copiato negli appunti

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.

Ti consigliamo anche