Esta página foi útil?
Seus comentários sobre este conteúdo são importantes. Queremos saber sua opinião.
Comentários adicionais?
1500 caracteres restantes
Exportar (0) Imprimir
Expandir Tudo

Modelo de código de página Web do ASP.NET

Um página da Web do ASP.NET consiste em duas partes:

  • Elementos visuais, que incluem marcação, os controles do servidor, e texto estático.

  • Programação lógica para a página, que inclui manipuladores de eventos e outros códigos.

O ASP.NET fornece dois modelos para a gestão dos elementos visuais e de código - o modelo de página de arquivo único e o modelo de página code-behind. Os dois modelos funcionam da mesma forma e você pode usar os mesmos controles e código para ambos os modelos.

Este tópico explica como cada modelo funciona e oferece sugestões para quando escolher um modelo ou a outro.

No modelo de página de arquivo único, a marcação da página e seu código de programação estão no mesmo arquivo físico .aspx. O código de programação é em um bloco de script que contém o atributo runat = "server" para marca-lo como código ASP.NET que deve ser executado.

O exemplo de código a seguirmostra uma página de arquivo único contendo um controle Button e outro controle Label. A porção realçada exibe o manipulador de eventos Click para o controle Button dentro de um bloco script.

<%@ Page Language="VB" %>
<script runat="server">
    Protected Sub Button1_Click(ByVal sender As Object, _            ByVal e As System.EventArgs)        Label1.Text = "Clicked at " & DateTime.Now.ToString()    End Sub
</script>

<html>
<head id="Head1" runat="server">
  <title>Single-File Page Model</title>
</head>
<body>
  <form id="form1" runat="server">
    <div>
      <asp:Label ID="Label1" 
        runat="server" Text="Label">
      </asp:Label>
      <asp:Button ID="Button1" 
         runat="server" OnClick="Button1_Click" Text="Button">
      </asp:Button>
    </div>
  </form>
</body>
</html>

<%@ Page Language="C#" %>
<script runat="server">
void Button1_Click(Object sender, EventArgs e){    Label1.Text = "Clicked at " + DateTime.Now.ToString();}
</script>
<html>
<head>
  <title>Single-File Page Model</title>
</head>
<body>
  <form runat="server">
    <div>
       <asp:Label id="Label1" 
         runat="server" Text="Label">
       </asp:Label>
       <br />
       <asp:Button id="Button1" 
         runat="server" 
         onclick="Button1_Click" 
         Text="Button">
      </asp:Button>
    </div>
  </form>
</body>
</html>

O bloco de script pode conter a quantidade de código conforme a página requer. O código pode consistir de manipuladores de eventos para o controle da página (como no exemplo), métodos, propriedades, e qualquer outro código que você use normalmente em um arquivo de classe. Em tempo de execução, uma página de arquivo único é tratada como uma classe que deriva da classe Page. A página não contém uma declaração de classe explícita. Em vez disso, o compilador gera uma nova classe que contém os controles como membros. (Nem todos os controles são expostos como membros da página, alguns são filhos de outros controles.) O código na página torna-se parte da classe, por exemplo, manipuladores de eventos que você cria tornam-se membros da classe derivada Page.

Para obter mais informações, veja Visão geral sobre classes de páginas ASP.NET.

O modelo de página code-behind permite-lhe manter a marcação em um único arquivo (.aspx) e o código de programação em outro arquivo. O nome do arquivo de código varia de acordo com a linguagem de programação que você está usando.

ObservaçãoObservação:

Nem todas as linguagens de programação .NET permitem que você crie arquivos code-behind para páginas Web ASP.NET. As linguagens devem suportar classes parciais. Por exemplo, J# não suporta linguagens parciais, e portanto não suporta a criação de arquivos code-behind para páginas ASP.NET.

Por exemplo, se você estiver trabalhando com uma página chamada SamplePage, a marcação está no arquivo SamplePage.aspx e o código é em um arquivo denominado SamplePage.aspx.vb (para Visual Basic), SamplePage.aspx.cs (para C#), e assim por diante.

ObservaçãoObservação:

O modelo code-behind usado no .NET Framework versão 2.0 é diferente daquele usado em versões anteriores.

No modelo code-behind, o exemplo usado na seção anterior para a página de arquivo único seria em duas partes. A marcação seria em um arquivo (neste exemplo, SamplePage.aspx) e seria semelhante à página de arquivo único, como mostrado no seguinte exemplo de código.

<%@ Page Language="VB" CodeFile="SamplePage.aspx.vb" 
    Inherits="SamplePage" AutoEventWire="false" %>
<html>
<head runat="server" >
   <title>Code-Behind Page Model</title>
</head>
<body>
  <form id="form1" runat="server">
    <div>
       <asp:Label id="Label1" 
         runat="server" Text="Label" >
      </asp:Label>
      <br />
      <asp:Button id="Button1" 
         runat="server" 
         onclick="Button1_Click" 
         Text="Button" >
       </asp:Button>
    </div>
  </form>
</body>
</html>

<%@ Page Language="C#" CodeFile="SamplePage.aspx.cs" 
    Inherits="SamplePage" AutoEventWireup="true" %>
<html>
<head runat="server" >
   <title>Code-Behind Page Model</title>
</head>
<body>
  <form id="form1" runat="server">
    <div>
       <asp:Label id="Label1" 
         runat="server" Text="Label" >
      </asp:Label>
      <br />
      <asp:Button id="Button1" 
         runat="server" 
         onclick="Button1_Click" 
         Text="Button" >
       </asp:Button>
    </div>
  </form>
</body>
</html>

Existem duas diferenças na página .aspx entre o arquivo único e os modelos code-behind. No modelo code-behind, não há nenhum bloco de script com o atributo runat="server". (A página pode conter blocos script sem o atributo runat="server" se você deseja gravar o script do lado do cliente na página.) Segundo a diferença é que a diretiva @ Page no modelo code-behind contém atributos que consultam um arquivo externo (SamplePage.aspx.vb ou SamplePage.aspx.cs) e uma classe. Estes atributos vinculam a página .aspx ao seu código.

O código está em um arquivo separado. O exemplo de código a seguir mostra um arquivo de code-behind que contém o mesmo manipulador de eventos Click fica com o exemplo para a página de arquivo único.

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class SamplePage : System.Web.UI.Page
{
    protected void Button1_Click(object sender, EventArgs e)
    {
        Label1.Text = "Clicked at " + DateTime.Now.ToString();
    }
}

O arquivo code-behind contém as declarações de classe completas no namespace padrão. No entanto, a classe é declarada com a palavra-chave partial, o que indica que a classe não está contida totalmente em um arquivo. Em vez disso, quando a pagina é rodada, o compilador lê a pagina .aspx e o arquivo que está referenciado na diretiva @ Page, assimiliando-os a uma classe simples e compilando a unidade em uma única classe.

O arquivo com a classe partial herda da classe Page da página. Para obter mais informações, veja Visão geral sobre classes de páginas ASP.NET.

Os modelos de página de arquivo único e code-behind possuem as mesmas funcionalidades. Em tempo de execução, os modelos são executados da mesma maneira e não existe nenhuma diferença de desempenho entre eles. Portanto escolher um modelo de página depende de outros fatores, como você deseja organizar o código em seu aplicativo, se é importante separar o design da página da codificação e assim por diante.

ObservaçãoObservação:

Exemplos que você lê na documentação são frequentemente apresentados como páginas de arquivo único. Isto é principalmente como uma conveniência para o leitor, porque evita ter que ilustrar dois arquivos para cada exemplo. O fato de você encontrar exemplos de arquivo único na documentação não deve ser interpretado no sentido de que as páginas de arquivo único são favorecidas sobre páginas code-behind ou que existe algum outro benefício inerente a páginas de arquivo único.

Vantagens de páginas de arquivo único

Como regra, o modelo de arquivo único é adequado para páginas em que o código consiste basicamente de manipuladores de eventos para os controles na página.

Vantagens do modelo de página de arquivo único incluem o seguinte:

  • Em páginas onde não há muito código, a conveniência de manter o código e marcação no mesmo arquivo pode prevalecer sobre outras vantagens do modelo code-behind. Por exemplo, pode ser mais fácil para estudar uma página de arquivo único, porque você pode ver o código e a marcação em um só lugar.

  • Páginas escritas usando o modelo de arquivo único são um pouco mais fáceis para implantar ou para enviar para outro programador porque há somente um arquivo.

  • Como não há nenhuma dependência entre arquivos, uma página de arquivo único é mais fácil para renomear.

  • Gerenciando arquivos em um sistema de controle de código fonte é ligeiramente mais fácil, porque a página é independente em um único arquivo.

Vantagens de páginas code-behind

As páginas code-behind oferecem a vantagem de ser adequadas para aplicativos da Web com código significativo ou no qual vários desenvolvedores irão criar um site da Web.

Vantagens do modelo code-behind incluem o seguinte:

  • As páginas code-behind oferecem uma separação limpa de marcação (interface do usuário) e do código. Ela é prática para que um designer trabalhe na marcação enquanto um programador escreve o código.

  • O código não é exposto aos designers da página ou há outras pessoas que trabalham somente com a marcação de página.

  • O código pode ser reutilizado para várias páginas.

A compilação e implantação de páginas de arquivo único e code-behind são semelhantes. Em sua forma mais simples, você copia a página para o servidor de destino. Se você estiver trabalhando com páginas code-behind, você copia a página .aspx e o arquivo com o código. Quando a página for pela primeira vez solicitada, o ASP.NET compila a página e a executa. Observe que em ambos os cenários você implanta a código fonte com a marcação.

Como alternativa, você pode pré-compilar seu site da Web. Nesse caso, ASP.NET produz o código do objeto para as páginas que você pode copiar para o servidor de destino. A pré-compilação funciona para os modelos de arquivo único e code-behind, e a saída é a mesma para ambos os modelos. Para obter mais informações, consulte ASP.NET Precompilation Overview.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2015 Microsoft