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:
© 2014 Microsoft