MasterPage e Css (parte 2)

Riutilizziamo il template dell’ultimo articolo per realizzare un layout a 2 colonne:

Cominciamo con una masterpage annidata:

<%@ Master Language=”C#” MasterPageFile=”~/MainMasterPage.master” AutoEventWireup=”true”
CodeFile=”2ColsMasterPage.master.cs” Inherits=”_2ColsMasterPage” %>

<asp:Content ID=”Content1″ ContentPlaceHolderID=”head” runat=”Server”>
<link href=”2ColStyleSheet.css” rel=”stylesheet” type=”text/css” />
</asp:Content>
<asp:Content ID=”Content2″ ContentPlaceHolderID=”ContentPlaceHolder1″ runat=”Server”>
<div id=”colSX”>
<asp:ContentPlaceHolder ID=”ContentPlaceHolderSX” runat=”server”>
</asp:ContentPlaceHolder>
</div>
<div id=”colDX”>
<asp:ContentPlaceHolder ID=”ContentPlaceHolderDX” runat=”server”>
</asp:ContentPlaceHolder>
</div>
</asp:Content>

e la pagina aspx che la utilizzera’:

<%@ Page Title=”" Language=”C#” MasterPageFile=”~/2ColsMasterPage.master” AutoEventWireup=”true” CodeFile=”2Colonne.aspx.cs” Inherits=”_2Colonne” %>

<asp:Content ID=”Content1″ ContentPlaceHolderID=”ContentPlaceHolderSX” Runat=”Server”>
Colonna1<br />
Colonna1<br />
Colonna1<br />
Colonna1<br />
Colonna1<br />
Colonna1<br />
Notare l’anomalia quando una colonna è + altra dell’altra si comporta esattamente come un elemento inline,
per ovviare questo, c’è un trik ma è un po’ macchinoso e si basa sulle liste

</asp:Content>
<asp:Content ID=”Content2″ ContentPlaceHolderID=”ContentPlaceHolderDX” Runat=”Server”>
Colonna2<br />
Colonna2<br />
Colonna2<br />
Colonna2<br />
Colonna2<br />
Colonna2<br />
Colonna2<br />
Colonna2<br />
Colonna2<br />
Colonna2<br />
Colonna2<br />
Colonna2<br />
Colonna2<br />
</asp:Content>

Infine il file css referenziato:

#colSX
{
width: 39.09%;
background-color: Fuchsia;
padding:inherit;
vertical-align:top;
}
#colDX
{
width: 59.09%;
background-color: Olive;
vertical-align:top;
}

…anche per oggi e’ tutto, la prossima volta le colonne saranno 3…

Add comment gennaio 19, 2010

MasterPage e Css (parte 1)

Qualche tempo fa, un mio collega, mi ha sorpreso chiedendomi dell’utilita’ delle masterpage in asp.net; aveva la necessita’ di creare il classico template a tre colonne con i css e mi ha chiesto di fornirgli un esempio funzionate.

L’esempio e’ servito allo scopo, e dopo aver ricevuto la stessa richiesta sulle pagine di un noto forum mi sono deciso di rispolverare l’esempio tra queste pagine abbandonate da un bel pezzo :)

SiteMap

La navigazione nel sito e’ articolata secondo questa sitemap, struttura che utilizzeremo anche per alimentare il controllo di menu>

<?xml version=”1.0″ encoding=”utf-8″ ?>
<siteMap xmlns=”http://schemas.microsoft.com/AspNet/SiteMap-File-1.0″ >
<siteMapNode title=”" description=”" url=”~/”>
<siteMapNode title=”1 Colonna” description=”1 sola colonna” url=”~/Default.aspx”>
<siteMapNode title=”2 Colonne inline” description=”2 colonne 40/60″ url=”~/2Colonne.aspx”>
</siteMapNode>
<siteMapNode title=”3 Colonne inline” description=”2 colonne 30/40/30″ url=”~/3Colonne.aspx”>
</siteMapNode>
</siteMapNode>
</siteMapNode>
</siteMap>

Menu’ & Template principale

I commenti sono nel mark-up:

<%@ Master Language=”C#” AutoEventWireup=”true” CodeFile=”MainMasterPage.master.cs”
Inherits=”MainMasterPage” %>

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head runat=”server”>
<title></title>
<link href=”master.css” rel=”stylesheet” type=”text/css” />
<asp:ContentPlaceHolder ID=”head” runat=”server”>
</asp:ContentPlaceHolder>
</head>
<body>
<form id=”form1″ runat=”server”>
<div id=”wrapper”>
<div id=”Header”>
<h1>
Ciao!!!</h1>
<h3>Ecco il template che volevi vedere</h3>

Nota: ho utilizzato dimensioni percentuali, ma di solito questo è template per un layout a dimensioni fisse, con il wrapper a 960px(classico a 1024×768), e con le colonne a dimensioni a piacere(occhio se utilizzi i bordi devi sempre sottrarli dalle dimensioni dell’elemento).<br />
se utilizzi dimensioni fisse è crossbrowser per IE7/8 FF1/2/3 & Safari 4.x, Opera non so… BOH!!!
</div>
<div id=”MainMenu”>
<asp:Menu ID=”Menu1″ runat=”server” DataSourceID=”SiteMapDataSource1″ Orientation=”Horizontal”
StaticDisplayLevels=”3″ MaximumDynamicDisplayLevels=”0″>
</asp:Menu>
<asp:SiteMapDataSource ID=”SiteMapDataSource1″ runat=”server” />
</div>
<div id=”MainContainer”>
<asp:ContentPlaceHolder ID=”ContentPlaceHolder1″ runat=”server”>
</asp:ContentPlaceHolder>
</div>
<div id=”Footer”>
<h1>
Footer</h1>

</div>
</div>
</form>
</body>
</html>

Questo template assicura la struttura principale del sito web e fornisce la base per le specializzazioni degli altri template che andremo a realizzare:

Il file css referenziato:

<link href=”master.css” rel=”stylesheet” type=”text/css” />

contiene queste poche istruzioni di stile:

.inlineable
{
display: -moz-inline-stack;
display: inline-block;
zoom: 1; *display:inline;
}

* {margin:0;padding:0;}
#wrapper
{
width: 960px;
margin: 0 auto;
position:relative;
}

#Header
{
width:100%;
background-color: green;
}
#Footer
{
width:100%;
background-color: Purple;
}

#MainMenu{
width:100%;
background-color: Yellow;
}

#MainContainer{
width:100%;
background-color: Olive;
}

Ora realizziamo la prima pagina ad una sola colonna:

<%@ Page Title=”" Language=”C#” MasterPageFile=”~/MainMasterPage.master” AutoEventWireup=”true”
CodeFile=”Default.aspx.cs” Inherits=”_Default” %>

<asp:Content ID=”Content1″ ContentPlaceHolderID=”head” runat=”Server”>
<style type=”text/css”>
.dummyStyle{
width: 930px; border: dashed 1px red; background-color: Aqua; height: 20px;
margin-left:10px;margin-right:10px;
}
</style>
</asp:Content>
<asp:Content ID=”Content2″ ContentPlaceHolderID=”ContentPlaceHolder1″ runat=”Server”>
<div>
</div>
Questo è il contenuto della master a una sola colonna
<div>
</div>
Questo è il contenuto della master a una sola colonna
<div>
</div>
Questo è il contenuto della master a una sola colonna
</asp:Content>

…e per il momento e’ tutto… a presto!

Add comment gennaio 18, 2010

Google è a pezzi da almeno 20 min e nessuno se ne sembra ancora accorto…

Add comment dicembre 19, 2009

Previous Posts


Cloud delle categorie

aspnet Framework .net hosting illustrazione off topic programmazione recensioni Tips tutorial web-design

Articoli recenti

Archivi

Statistiche del Blog

Vota questo maledetto blog

Social Bookmarking

Da dove diavolo arrivate…

RSS Feed da StackTrace

RSS Feed AspItalia ASP.NET 2.0