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

Páginas mestras ASP.NET permitem a você criar um layout consistente para as páginas em seu aplicativo.Uma única página mestra define a aparência e comportamento padrão que você deseja para todas as páginas (ou um grupo de páginas) em seu aplicativo.Você pode criar páginas de conteúdo individuais que contêm o conteúdo que você deseja exibir.Quando usuários solicitarem as páginas de conteúdo, elas mesclam com a página mestra para produzir saída que combina o layout da página mestre com o conteúdo da página de conteúdo.

Como Páginas Mestras Funcionam

Páginas mestras na verdade consistem de duas partes, a página mestra própria e uma ou mais páginas de conteúdo.

Observação:

Você pode também aninhar páginas mestras.Para obter detalhes, consulte:Páginas mestras ASP.NET aninhadas.

Páginas Mestras

Uma página mestra é um arquivo ASP.NET com a extensão .master (por exemplo, MySite.master) com um layout predefinido que pode incluir texto estático, elementos HTML, e os controles de servidor.A página mestra é identificada por uma diretiva especial @ Mestre que substitui a diretiva @ Page que é usada para páginas .aspx comuns.A diretiva aparenta como a seguir.

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

The @ Master directive can contain most of the same directives that a @ Controle directive can contain.Por exemplo, a seguinte diretiva de página mestra inclui o nome de um arquivo code-behind, e atribui um nome de classe para a página mestra.

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

In addition to the @ Master directive, the master page also contains all of the top-level HTML elements for a page, such as html, head, and form.Por exemplo, em uma página mestra você pode usar uma tabela HTML para o layout, um elemento img para o logotipo da empresa, texto estático para o aviso de direitos autorais e controles do servidor para criar navegação padrão para seu site.Você pode usar quaisquer elemtentos HTML e quaisquer elementos ASP.NET como parte da sua página mestra.

Espaços Reservados de Conteúdo Substituível

Além do texto estático e controles que serão exibidos em todas as páginas, a página mestra também inclui um ou mais controles ContentPlaceHolder.Esses controles de espaço reservado definem áreas onde conteúdo substituível aparecerá.Por sua vez, o conteúdo substituível é definido em páginas de conteúdo.Após você ter definido os controles ContentPlaceHolder, uma página mestra pode ser semelhantes a esta.

<% @ Master Language="VB" %>

<!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  >
    <title>Master page title</title>
</head>
<body>
    <form id="form1" >
        <table>
            <tr>
                <td><asp:contentplaceholder id="Main"  /></td>
                <td><asp:contentplaceholder id="Footer"  /></td>
            </tr>
        </table>
    </form>
</body>
</html>
<%@ 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  >
    <title>Master page title</title>
</head>
<body>
    <form id="form1" >
        <table>
           <tr>
               <td><asp:contentplaceholder id="Main"  /></td>
               <td><asp:contentplaceholder id="Footer"  /></td>
           </tr>
        </table>
    </form>
</body>
</html>

Páginas de Conteúdo

Você definir o conteúdo para o controle de espaço reservado da página mestra criando páginas de conteúdo individuais, que são páginas ASP.NET (arquivos .aspx e, opcionalmente, arquivos code-behind) que são vinculados a uma página mestra específica.The binding is established in the content page's @ Page directive by including a MasterPageFile attribute that points to the master page to be used.For example, a content page might have the following @ Page directive, which binds it to the Master1.master page.

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

Na página de conteúdo, para criar o conteúdo, adicionar Content controles e mapeando-os para ContentPlaceHolder controles de página mestra.Por exemplo, a página mestra pode ter espaços reservados de conteúdo chamados Main e Footer.Na página de conteúdo, você pode criar dois controles Content, um que é mapeado para o controle ContentPlaceHolderMain e o outro mapeado para o controle ContentPlaceHolderFooter, conforme mostrado na figura a seguir.

Substituindo conteúdo de espaço reservado

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

Uma página de conteúdo pode parecer como a seguir.

<% @ 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>

The @ Page directive binds the content page to a specific master page, and it defines a title for the page that will be merged into the master page.Observe que a página de conteúdo contém nenhuma outra marcação fora dos controles Content.(A página mestra deve conter um elemento head com o atributo para que a configuração de título possa ser mesclada em tempo de execução.)

Você pode criar várias páginas mestras para definir diferentes layouts para partes diferentes do seu site, e um conjunto diferente de páginas de conteúdo para cada página mestra.

Vantagens das Páginas Mestras

Páginas mestras fornecem funcionalidade que desenvolvedores tenham criado tradicionalmente, copiando código existente, texto, e elementos de controle repetidamente; usando conjuntos de quadros; usando arquivos de inclusão para elementos comuns; usando controles de usuário ASP.NET; e assim por diante.Vantagens das páginas mestras incluem os seguintes:

  • Elas permitem a você centralizar a funcionalidade comum de suas páginas para que você possa fazer atualizações em apenas um local.

  • Eles tornam mais fácil criar um conjunto de controles e código e aplicar os resultados a 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 oferecem controle mais aguçado sobre o layout da página final ao permitir que você controle como os controles de espaço reservado são processados.

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

Comportamento em Tempo de Execução de Páginas Mestras

Em tempo de execução, páginas mestras são manipuladas na sequência a seguir:

  1. Os usuários solicita uma página, digitando a URL da página de conteúdo.

  2. When the page is fetched, the @ Page directive is read.Se a diretiva referencia uma página mestra, a página mestra é também lida.Se esta for a primeira vez que as páginas tiverem sido solicitadas, ambas as páginas sã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 no navegador.

O processo é ilustrada no diagrama a seguir.

Páginas mestras em tempo de execução

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.

Caminhos da Página Mestra e da Página de Conteúdo

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.

Páginas Mestras e Temas

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 obter mais informações, consulte Visão Geral de Temas e Aparências ASP.NET.

Escopo de Páginas Mestras

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.

Consulte também

Tarefas

Como: Conteúdo de páginas mestras do ASP.NET de referência

Como: Conteúdo de páginas mestras do ASP.NET de referência

Conceitos

Events in ASP.NET Master and Content Pages

Páginas mestras ASP.NET aninhadas