 ASP
.NET - Criando Master Pages usando definições CSS
ASP
.NET - Criando Master Pages usando definições CSS
Usando Master Pages podemos compartilhar conteúdo dentre diversas páginas;podemos também usar as Master Pages para criar um leiaute comum. Dessa forma nosso website fica mais fácil de manter , estender e modificar.
A figura abaixo representa o processo que ocorre durante a execução da página que usa uma master page: as duas páginas são mescladas para exibir o conteúdo.
|  | 
| fonte: http://www.asp.net/web-forms/tutorials/master-pages/creating-a-site-wide-layout-using-master-pages-cs | 
Neste artigo veremos como combinar leiautes CSS e Master Page para definir leiautes de páginas em um website.
Vou usar o Visual Web Developer 2010 Express Edition nos exemplos mostrado neste artigo.
Abra o Visual Web Developer 2010 Express Edition e crie um novo projeto do tipo ASP .NET Web Application com o nome MasterPage_CSS;
|  | 
Ao clicar no botão OK será criado um projeto ASP .NET contendo uma estrutura já pronto para ser utilizada conforme mostrada na janela Solution Explorer:
|  | Na estrutura criada vemos
        uma pasta chamada Styles e no seu
        interior o arquivo Site.css que é o
        arquivo de estilos usado; Este arquivo irá aplicar estilos nas páginas do site; Vemos também o arquivo Site.Master, onde a extensão .Master indica que este arquivo é uma master page. O arquivo de estilo Site.css esta sendo usado pela Master Page para definir o leiaute da página. 
 | 
Se abrirmos o arquivo Site.Master iremos notar que existe uma referência ao arquivo Site.css que esta na pasta definida entre as tags <head> conforme abaixo:
|  | 
Além de referenciar o arquivo de estilo conforme mostrada acima podemos também definir os estilos diretamente na Master Page, o que não é muito recomendado, mas é possível de ser feito.
Se executarmos o projeto veremos na figura abaixo o leiaute atual definido pela Master Page e pelo arquivo de estilo Site.css:
|  | 
Vamos alterar o leiaute da página de apresentação definindo outro arquivo de estilo e alterando a nossa master page.
Para nos ajudar a criar um arquivo de estilo podemos usar os recursos do próprio Visual Web Developer (e do Visual Studio). Clicando duas vezes sobre o arquivo Site.css o mesmo será aberto no editor e através do menu Styles podemos incluir uma rega de estilo (Add Style Rule) ou criar um estilo (Build Style):
|  | 
Vamos criar um novo arquivo de estilo chamado Macoratti.css; Clique com o botão direito sobre a pasta Styles e selecione Add New Item;
A seguir escolha o template Style Sheet e informe o nome Macoratti.css e clique Add;
|  | 
A seguir defina o seguinte código no arquivo de estilo Macoratti.css:
|  | 
Observe que no arquivo de estilo definimos, além do body, 3 divs :
Vamos aproveitar e criar uma nova pasta no interior da pasta Styles com o nome Images. Clique com o botão direito do mouse sobre a pasta Styles e selecione Add New Folder informando a seguir o nome Images;
Após isso vamos incluir uma imagem na pasta Images recém criada. Clique com o botão direito do mouse sobre a pasta Images e selecione Add Existing Item e selecione uma imagem de sua preferência. Eu inclui a imagem maco10.jpg.
A seguir repita o procedimento acima e inclua uma outra imagem a seu gosto com o nome cdasp.gif
Agora criar uma nova master page chamada Mac.Master no projeto via menu Project, opção Add New Item;
Selecionando a opção Master Page, informando Mac.Master e clicando no botão Add;
|  | 
Agora que temos a nossa master page criada vamos definir o seu código da seguinte forma:
| <%@ Master Language="VB" AutoEventWireup="false" CodeBehind="Mac.master.vb" Inherits="MasterPage_CSS.Mac" %> <!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>Master Page com CSS</title> <link href="~/Styles/Macoratti.css" rel="stylesheet" type="text/css" /> <asp:ContentPlaceHolder ID="head" runat="server"> </asp:ContentPlaceHolder> </head> <body> <form id="form1" runat="server"> <div id="headercontent"> <asp:Image ID="Image1" ImageUrl="~/Styles/Images/maco10.jpg" runat="server" /> </div> <div id="leftcontent" > <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> </div> <div id="rightcontent"> <a href="pagina1.aspx">Pagina 1</a><br /> <a href="pagina2.aspx">Pagina 2</a><br /> <a href="pagina3.aspx">Pagina 3</a><br /> <a href="pagina4.aspx">Pagina 4</a><br /> <a href="pagina5.aspx">Pagina 5</a><br /> </div> </form> </body> </html> | 
Vejamos o que temos neste código:
1- Declarações
a- A declaração <form id="form1" runat="server"> pois todas as páginas ASP.NET normalmente têm um formulário Web, e, porque a master page pode incluir controles Web que devem aparecer dentro de um formulário Web. Não se esqueça de adicionar o formulário Web à sua master page.
b- A declaração <asp:ContentPlaceHolder ID="head" runat="server"></asp:ContentPlaceHolder> - Indica um controle ContentPlaceHolder chamado head - este controle ContentPlaceHolder aparece dentro do controle de servidor <head> e pode ser usado para declarativamente adicionar conteúdo ao elemento <head>.
c-) A declaração <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> - Indica um controle ContentPlaceHolder chamado ContentPlaceHolder1 - esse controle ContentPlaceHolder aparece dentro do formulário Web e serve como a região para a interface da página de conteúdo do usuário.
2- A diretiva @Master:
A diretiva @Master é similar à diretiva @Page que aparece em páginas ASP.NET. Ela define a linguagem server-side (C#/VB) usada e as informações sobre a localização e a herança da classe code-behind master page.
3- A definição do link para o arquivo de estilo Macoratti.css presente na pasta Styles entre as tags <head> :
<link href="~/Styles/Macoratti.css" rel="stylesheet" type="text/css" />
4- A definição de 3 divs : headercontente, leftcontent e rightcontent conforme abaixo:
1- na div headercontent incluímos um controle Image e atribuímos a imagem maco10.jpg a propriedade ImageUrl:
<div
id="headercontent">
<asp:Image ID="Image1"
ImageUrl="~/Styles/Images/maco10.jpg"
runat="server" />
</div>
2- Na div leftcontent incluímos o ContentPlaceHolder :
<div
id="leftcontent" >
<asp:ContentPlaceHolder ID="ContentPlaceHolder1"
runat="server">
</asp:ContentPlaceHolder>
</div>
3- Na div rightcontent incluímos alguns links:
<div
id="rightcontent">
<a href="pagina1.aspx">Pagina 1</a><br
/>
<a href="pagina2.aspx">Pagina 2</a><br
/>
<a href="pagina3.aspx">Pagina 3</a><br
/>
<a href="pagina4.aspx">Pagina 4</a><br
/>
<a href="pagina5.aspx">Pagina 5</a><br
/>
</div>
Veja como ficou o leiaute da master page Mac.Master :
|  | 
Vamos incluir um novo web form no projeto via menu Project -> Add New Item escolhendo o template Web Form using Master Page e informando o nome Macoratti.aspx e clicando em Add;
|  | 
A seguir selecione a master page Mac.Master e clique em OK;
|  | 
Executando o projeto (clique com o botão direito sobre a página Macoratti.aspx e escolha a opção Set As Start Page no menu suspenso) iremos obter:
|  | 
Vamos agora criar uma nova master page para definir um leiaute com 3 colunas.
Inclua uma nova master page com o nome Mac1.Master no projeto e defina o seu código conforme abaixo:
| <%@ Master Language="VB" AutoEventWireup="false" CodeBehind="Mac1.master.vb" Inherits="MasterPage_CSS.Mac1" %> <!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>Master Page com CSS 2</title> <link href="~/Styles/Macoratti1.css" rel="stylesheet" type="text/css" /> <asp:ContentPlaceHolder ID="head" runat="server"> </asp:ContentPlaceHolder> </head> <body> <form id="form1" runat="server"> <div id="body_area"> <div id="left"> <div class="InnerText"> <div id="logo"> <asp:Image ID="Image1" ImageUrl="~/Styles/Images/maco10.jpg" runat="server" Height="26px" Width="165px" /> </div> <div class="Nav"> <ul class="Nav"> <li><a href="">Link1</a></li> <li><a href="">Link2</a></li> <li><a href="">Link3</a></li> <li><a href="">Link3</a></li> </ul> </div> </div> </div> <div id="mid"> <div id="banner"> <asp:Image ID="Image2" ImageUrl="~/Styles/Images/cdasp.gif" runat="server" /> </div> <div class="InnerText"> <asp:contentplaceholder id="Content1" runat="server"> </asp:contentplaceholder> </div> </div> <div id="right"> <div class="InnerText"> Direito </div> </div> <div id="footer"> <div class="InnerText"> Copyright © 2010 Macoratti.net - Todos os direitos reservados. </div> </div> </div> </form> </body> </html> | 
Observe que no código definido para esta master page temos as seguintes divs e referências:
1- Referência ao arquivo de estilo Macoratti1.css que iremos criar a seguir
2- Declaração das seguintes divs:
Precisamos agora criar um novo arquivo de estilo chamado Macoratti1.css contendo o seguinte código:
| body
{
    margin:0;
     padding-top:0px;
    padding-right:0;
    padding-bottom:0;
     padding-left:0;
     font-family:Arial, Helvetica, sans-serif;
    background-color:#D5CDAC;
}
div, h1, h2, h3, h4, p, form, label, input, textarea, img, span{
      margin:0; padding:0;
}
ul{
     margin:0; 
     padding:0; 
     list-style-type:none;
     font-size:12px;
     line-height:150%;
}
.spacer{
      clear:both; 
      font-size:0; 
      line-height:0;
}
/*-------------------body_area--------------------*/
#body_area{
      width:1004px;
      margin-top:10px;
      margin-right:auto;
       margin-bottom:0;
      margin-left:auto;
      font-family:Tahoma;
      font-size: 12px;
      font-style:normal;
      line-height:normal;
      font-weight:bold;
      font-variant:normal;
      text-transform:none;
      text-decoration:none;
      padding: 0px;
      float: none;
 }
#logo
{
  width:170px;
  height:100px;
}
#left {
      margin: 0px;
      float: left;  
      width: 185px;
       height: 500px;
      padding-top:4px;
      padding-right:0px;
      padding-bottom:0px;
      padding-left:0px;
      background-color:#EDE8D3;
      margin-bottom:12px;
}
#left div.InnerText
{
      padding-left:12px;
}
div.Nav
{
    width:140px;
    margin-right:auto;
    margin-left:auto;
    background-color:#E3DCBD;
    padding-bottom:20px;
}
ul.Nav
{
      padding: 8px 0px 0 22px;
      background-color:#E3DCBD;
      color:#000;
      margin:0 0 0 2px;
}
   
ul.Nav li
{
   background:url('images/nav_div2.gif') repeat-x left bottom;
   font-size:0;
   line-height:0
}
ul.Nav li a
{
      background-position: inherit 6px;
    display:block;
      color:#787159;
      text-decoration:none;
      font-weight:bolder; font-style:normal; font-variant:normal;
      line-height:17px; 
      font-size:11px; font-family:Arial, Helvetica, sans-serif;
      padding-left:8px; padding-right:0; padding-top:0; padding-bottom:0;
      background-color:inherit;
    background-image: url('images/arrow.gif');
    background-repeat: no-repeat;
    background-attachment: inherit;
}
ul.Nav li a:hover{
      color:#A73F00;
      background-color:#EFECC8;
}
#banner
{
      width:620px;
      height:100px;
      margin-left:auto;
      margin-right:auto;
      text-align:center ;
      background-color:Gray ;
}
#mid {
      margin: 0px;
      padding: 0px;
      float: left;
      width: 628px;
      color:black;
      line-height:150%;
      font-weight:normal ;
      font-size:12px;
      background-color:#E3DCBD;
      padding-bottom:20px;
      margin-bottom:12px;
}
#mid div.InnerText
{
      margin-left:12px;
      margin-right:12px;
      margin-top:20px;
      padding:0;
      color:black;     
}
#mid a
{
      color:#A73F00;
      text-decoration:none;
      font-weight:bolder ;    
}
#right{
      margin: 0px;
      float: right;
      width: 185px;
      padding-top:2px;
      padding-right:0px;
      padding-bottom:0px;
      padding-left:0px;
      margin-bottom:12px;
}
#right div.InnerText
{
            padding-left:10px;
}
/*-----------------------rodapé--------------------*/
#footer
{
  clear:both;
  border:solid 1px black;
}
#footer div.InnerText
{
        padding:10px;
} | 
Finalmente vamos criar um web form chamado Macoratti1.aspx usando o template Web Form using Master Page.
Após criar a página clique com o botão direito sobre a página Macoratti.aspx e escolha a opção Set As Start Page no menu suspenso.
Executando o projeto a página Macoratti1.aspx exibirá o seguinte leiaute:
|  | 
Vimos assim como definir o leiaute de páginas ASP .NET usando Master page e arquivos de estilo (CSS) com dois exemplos bem simples. Existem exemplos mais complexos que incluem master pages aninhadas que veremos em outro artigo.
Pegue o projeto completo
aqui: 
 MasterPage_CSS.zip
 MasterPage_CSS.zip
1Pedro 1:16
porquanto está escrito: Sereis santos, porque eu sou santo.Referências: