Visão Geral de Páginas Mestras ASP.NET

Visão Geral de Páginas Mestras ASP.NET

ASP.NET Master Pages permitem que você crie um layout consistente para as páginas da sua aplicação. Uma única Master Page define a aparência e comportamento padrão que você deseja para todas as páginas (ou um grupo de páginas) em sua aplicação. Você pode criar páginas de conteúdo individuais que contêm o conteúdo que você deseja exibir. Quando os usuários fazem uma requisição do conteúdo das páginas, ela é mesclada com a página mestra para produzir uma saída que combina o layout da página mestra com o conteúdo da página.

As master pages consistem de duas partes, a própria master page e uma ou mais páginas de conteúdo.

ObservaçãoObservação:

Você também pode aninhar master pages. Para detalhes, consulte Páginas mestras ASP.NET aninhadas.

Páginas Mestras

Uma master page é um arquivo ASP.NET com extensão .master (por exemplo, MeuSite.master) com um layout predefinido que pode incluir textos estáticos, elementos HTML e controles. A página mestra é identificada por uma diretiva especial @ Mestre que substitui a diretiva @ Page que é usada para páginas .aspx comuns. A diretiva tem a seguinte aparência.

<%@ Master Language="C#" %>

The @ Master directive can contain most of the same directives that a @ Controle directive can contain.Por examplo, a diretiva de master page seguinte inclui nomes de um arquivo code-behind, e atribui um nome de classe para a master page.

<%@ Master Language="C#" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>

Além da diretiva @ Master, a master page também contém todos os elementos HTML de nível superior para uma página, como html, head, e form.Por exemplo, uma master page pode usar uma tablea HTML para o layout, um elemento img para a logotipo da empresa, textos estáticos para aviso de copyright, e controles de servidor para criar um padrão de navegação do site.Você pode usar qualquer elemento HTML e ASP.NET como parte de sua master page.

Espaços Reservados de Conteúdo Substituível

Além dos textos estáticos e controles que serão exibidos em todas as páginas, a master page também inclui um ou mais controles ContentPlaceHolder.Esses controles placeholder (espaço reservado) define regiões onde conteúdos substituível irão aparecer.Por sua vez, o conteúdo substituível é definido nas páginas de conteúdo.Após você ter definido os controles ContentPlaceHolder, uma master page pode ter a seguinte aparencia.

<%@ Master Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 
    1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server" >
    <title>Master page title</title>
</head>
<body>
    <form id="form1" runat="server">
        <table>
           <tr>
               <td><asp:contentplaceholder id="Main" runat="server" /></td>
               <td><asp:contentplaceholder id="Footer" runat="server" /></td>
           </tr>
        </table>
    </form>
</body>
</html>

Páginas de Conteúdo

Você define o conteúdo para controles placeholder de uma master page, criando páginas de conteúdo individuais,  que são páginas ASP.NET (Arquivos .ASPX e, opcionalmene, arquivos code-behind) que são vinculados a uma específica.O vinculo é estabelecido na directiva @ Page da página de conteúdo, incluindo um atributo MasterPageFile que aponta para a master page a ser usada.Por exemplo, uma página de conteúdo pode ter a seguinte diretiva @ Page, que vincula à página Master1.master

<%@ Page Language="C#" MasterPageFile="~/MasterPages/Master1.master" Title="Content Page"%>

Na página de conteúdo, você cria o conteúdo adicionando controles Content e mapeando-os aos controles ContentPlaceHolder da master page.Por exemplo, a master page pode ter content placeholders chamados em Cabeçalhos e Rodapés.Nas páginas de conteúdo, você pode criar dois controles Content, um que é mapeado para o controle ContentPlaceHolder Principal e o outro mapeado para o controle ContentPlaceHolder do rodapé, como mostrado na figura a seguir.

Substituindo conteúdo de espaço reservado

Gráfico de MasterPagesMerge

Depois de criar controles Content, você adiciona texto e controles para eles.Em uma página de conteúdo, qualquer coisa que não está dentro dos controles Content (exceto blocos de script para códigos de servidor) resulta em um erro.Você pode executar quaisquer tarefas em uma página de conteúdo que você faça em uma página ASP.NET.Por exemplo, você pode gerar conteúdo para um controle Content usando controles de servidor e consultas a banco de dados ou outros mecanismos dinâmicos.

Uma página de conteúdo pode parecer com o seguinte.

<% @ Page Language="VB" MasterPageFile="~/Master.master" Title="Content Page 1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Main" Runat="Server">
    Main content.
</asp:Content>
    
<asp:Content ID="Content2" ContentPlaceHolderID="Footer" Runat="Server" >
    Footer content.
</asp:content>

[C#]

<% @ Page Language="C#" MasterPageFile="~/Master.master" Title="Content Page 1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Main" Runat="Server">
    Main content.
</asp:Content>
    
<asp:Content ID="Content2" ContentPlaceHolderID="Footer" Runat="Server" >
    Footer content.
</asp:content>

A diretiva @ Page vincula a página de conteúdo para uma master page específica e define um título para a página que será mesclada na master page.Observe que a página de conteúdo não contém nenhuma outra marcação fora dos controles Content.(A master page deve conter um elemento head com o atributo runat="server" para que a configuração de título possa ser mesclada em tempo de execução.)

Você pode criar várias master pages para definir diferentes layouts para diferentes partes do seu site e um conjunto diferente de páginas de conteúdo para cada master page.

As páginas mestras fornecem funcionalidades que desenvolvedores tradicionalmente criavam copiando código existente, texto e elementos de controle repetidamente; usando framesets; usando arquivos de inclusão para elementos comuns; usando user controls ASP.NET; e assim por diante.Entre as vantagens das páginas mestras, estão as seguintes:

  • Elas permitem que você centralize funcionalidades comuns de suas páginas para que você possa fazer atualizações em um só lugar.

  • Elas tornam mais fácil criar um conjunto de controles e código e aplicar os resultados em um conjunto de páginas. Por exemplo, você pode usar controles na página mestra para criar um menu que se aplica a todas as páginas.

  • Elas lhe fornecem um alto controle sobre o layout final da página, permitindo que você controle como os controles placeholder são processados.

  • Elas fornecem um modelo de objeto que permite que você customize a página mestra a partir de páginas de conteúdo individuais.

Em tempo de execução, master pages são tratadas na seguinte sequência:

  1. Usuários solicitam uma página digitando a URL da página.

  2. Quando a página é procurada, a diretiva @ Page é lida. Se a diretiva faz referência a uma master page, a página principal é lida também. Se esta é a primeira vez que as páginas tenham sido solicitadas, ambas as páginas serão compiladas.

  3. A página mestra com o conteúdo atualizado é mesclada na árvore de controle da página de conteúdo.

  4. O conteúdo dos controles Content individuais será mesclado no controle ContentPlaceHolder correspondente na página mestra.

  5. A página mesclada resultante é processada para o navegador.

O processo é ilustrado no diagrama a seguir.

Páginas mestras em tempo de execução

Gráfico de MasterPagesMerge

Da perspectiva do usuário, as páginas mestra e de conteúdo combinadas são uma página simples e discreta.A URL da página é a da página de conteúdo.

De uma perspectiva de programação, as duas páginas atuam como recipientes separados para seus respectivos controles.A página de conteúdo atua como um recipiente para a página mestra.Entretanto, você pode referenciar membros públicos da página mestra a partir do código na página de conteúdo, conforme descrito na próxima seção.

Observe que a página mestra se torna uma parte da página de conteúdo.Na verdade, a página mestra funciona da mesma maneira que um controle de usuário atua — como um filho da página de conteúdo e como um recipiente dentro daquela página.Nesse caso, entretanto, a página mestra é o recipiente para todos os controles de servidor que são processados para o navegador.A árvore de controle para uma página mestra mesclada com uma página de conteúdo pode ter esta aparência:

Page
    Master Page
        (Master page markup and controls)
        ContentPlaceHolder
            Content page markup and server controls
        (Master page markup and controls)
        ContentPlaceHolder
            Content page markup and server controls
        (Master page markup and controls)

Este diagrama é simplificado; se a página de conteúdo não tiver controles Content correspondentes, a página mestra pode também ter marcação e controles nos controles ContentPlaceHolder.

Em geral, essa estrutura não tem nenhum efeito sobre como você constrói suas páginas ou as programa.Entretanto, em alguns casos, se você definir uma propriedade da página toda na página mestra, ela pode afetar o comportamento da página de conteúdo, pois a página mestra é o pai mais próximo para os controles na página.Por exemplo, se você definir a propriedade EnableViewState na página de conteúdo para true mas definir a mesma propriedade como false na página mestra, o estado de exibição será efetivamente desabilitado porque a configuração na página mestra tem prioridade.

Quando uma página de conteúdo é solicitada, seu conteúdo será mesclado com a página mestra, e a página executa no contexto da página de conteúdo.Por exemplo, se você receber a propriedade CurrentExecutionFilePath do objeto HttpRequest, se em código de página de conteúdo ou código de página mestra, o caminho representa o local da página de conteúdo.

A página mestra e página conteúdo não têm de estar na mesma pasta.As long as the MasterPageFile attribute in the content page's @ Page directive resolves to a .master page, ASP.NET can merge the content and master pages into a single rendered page.

Referenciando recursos externos

Tanto a página de conteúdo e a página mestra podem conter controles e elementos que referenciam recursos externos.Por exemplo, ambas podem conter controles de imagem que referenciam arquivos de imagem, ou podem conter âncoras que referenciam outras páginas.

O contexto para as páginas de conteúdo e mestra mescladas é o da página de conteúdo.Isso pode afetar como você especifica URLs para recursos, tais como arquivos de imagem e páginas de destino, em âncoras.

Controles de servidor

Nos controles de servidor em páginas mestras, ASP.NET modifica dinamicamente as URLs das propriedades que referenciam recursos externos.Por exemplo, você pode colocar um controle Image em um página mestra e definir sua propriedade ImageUrl para estar relacionada a página mestra.Em tempo de execução, ASP.NET modificará a URL para que ela seja resolvida corretamente no contexto da página de conteúdo.

ASP.NET pode modificar URLs nos casos a seguir:

  • A URL é uma propriedade de um controle de servidor ASP.NET.

  • A propriedade está marcada internamente no controle como sendo uma URL.(A propriedade é marcada com o atributo UrlPropertyAttribute.) Em termos práticos, propriedades de controles de servidor ASP.NET que são normalmente usadas para referenciar recursos externos são marcadas dessa forma.

Outros Elementos

ASP.NET não pode modificar URLs em elementos que não sejam controles de servidor.Por exemplo, se você usar um img elemento em uma página mestra e conjunto seus src atributo para um URL, ASP.NET não modificará a URL. Nesse caso, a URL será resolvida no contexto da página de conteúdo e criará a URL de acordo.

Em geral, ao trabalhar com elementos em páginas mestras, é recomendável que você use um controle de servidor, mesmo para elementos que não requerem código do servidor.Por exemplo, em vez de usar um elemento img, usar um controle de servidor Image.Dessa forma, o ASP.NET pode resolver URLs corretamente e você pode evitar problemas de manutenção que podem surgir se você mover o conteúdo da página mestre ou da página de conteúdo.

Para obter mais informações sobre como especificar caminhos para controles de servidor ASP.NET, consulte Caminhos de Site Web do ASP.NET.

Você não pode aplicar diretamente um tema ASP.NET para uma página mestra.If you add a theme attribute to the @ Master directive, the page will raise an error when it runs.

Entretanto, os temas são aplicados a páginas mestras sob estas circunstâncias:

  • Se um tema for definido na página de conteúdo.Páginas mestras são resolvidas no contexto de páginas de conteúdo, logo o tema da página de conteúdo é aplicado à página mestra da mesma maneira.

  • Se o site como um todo é configurado para usar um tema, incluindo uma definição de tema no elemento Páginas elemento (esquema configurações ASP.NET).

Para mais informações, acessar o link Visão Geral de Temas e Aparências ASP.NET.

Você pode anexar páginas de conteúdo a uma página mestra em três níveis:

  • No nível da página    Você pode usar uma diretiva da página em cada página de conteúdo para acoplá-la a uma página mestra, como no exemplo de código a seguir.

    <%@ Page Language="VB" MasterPageFile="MySite.Master" %> 
    

    <%@ Page Language="C#" MasterPageFile="MySite.Master" %> 
    
  • No nível do aplicativo Fazendo uma configuração no elemento pages do arquivo de configuração do aplicativo (Web.config), você pode especificar que todas as páginas ASP.NET (arquivos .aspx) do aplicativo se vinculem automaticamente a uma página mestra.O elemento pode parecer como a seguir.

    <pages masterPageFile="MySite.Master" />
    

    Se você usar essa estratégia, todas as páginas ASP.NET do aplicativo que tenham controles Content são mescladas com a página mestra especificada.(Se uma página ASP.NET não contém controles Content, a página mestra não é aplicada.)

  • No nível da pasta    Essa estratégia é como vinculação no nível do aplicativo, exceto você efetua a configuração em um arquivo Web.config em apenas uma pasta.As ligações da página mestra então se aplicam às páginas ASP.NET para aquela pasta.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2016 Microsoft