Partilhar via


Como: Migrar um ASP.NET 1.1 página da Web usando o atributo CodeBehind para o ASP.NET 2.0

Este tópico demonstra como criar uma página da Web e um controle de usuário que usam o atributo CodeBehind da diretiva @ Page, compilá-los e, em seguida, convertê-los para usar o atributo CodeFile com uma classe parcial nos arquivos de code-behind na versão 2.0 a .NET Framework.

A novo página da Web modelo code-behind no ASP.NET 2.0 é baseada em classes parciais.A marcação para a página é armazenada em um arquivo – o arquivo .aspx – e o código é definido em uma classe parcial – o arquivo code-behind.Convertendo suas páginas da Web existentes para o novo modelo code-behind permite ainda maior separação de código e marcação pois você não precisa incluir as variáveis instância ou ligação explícita de eventos na classe parcial.

Páginas da Web usando os atributos CodeBehind e Inherits da diretiva @ Page continuarão a trabalhar no .NET Framework 2.0.No entanto, você deve compilar arquivos code-behind e coloque o conjunto resultante na pasta Bin.

Se você escolher migrar para o modelo code-behind ASP.NET 2.0, faça alterações coordenadas para seu arquivo .aspx e arquivo code-behind.No arquivo .aspx, você substituirá o atributo CodeBehind com o atributo CodeFile.Os arquivos code-behind, você usará uma classe parcial.A vantagem de usar o novo modelo code-behind é que não é necessário compilar explicitamente os arquivos code-behind porque o compilador do ASP.NET faz isso automaticamente.

Além disso, ao usar o novo modelo code-behind, referências a outros arquivos code-behind devem ser adicionadas usando diretivas @ Register.

Para acessar a página da Web criada nos procedimentos abaixo, você precisará criar um diretório virtual Microsoft Internet Information Services (IIS).Para obter detalhes sobre criar um diretório virtual para o IIS, consulte Como: Criar e configurar diretórios virtual no IIS 5.0 e 6.0.

Para compilar um página da Web e controle de usuário usando o atributo CodeBehind

  1. Crie uma página Web usando o atributo CodeBehind da diretiva @ Page, conforme mostrado no exemplo de código a seguir.

    <%@ Page Language="VB" AutoEventWireup="true" 
        CodeBehind="CodeBehindExample.aspx.vb" 
        Inherits="CodeBehindExample" %>
    
    <!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 >
        <title>Code-Behind Using the CodeBehind Attribute</title>
    </head>
    <body>
        <form id="form1" >
        <div>
          <asp:Label id="Label1" ></asp:Label>    
        </div>
        </form>
    </body>
    </html>
    
    <%@ Page Language="C#" AutoEventWireup="true" 
        CodeBehind="CodeBehindExample.aspx.cs" 
        Inherits="CodeBehindExample" %>
    
    <!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 >
        <title>Code-Behind Example</title>
    </head>
    <body>
        <form id="form1" >
        <div>
          <asp:Label id="Label1" ></asp:Label>    
        </div>
        </form>
    </body>
    </html>
    
    Public Class CodeBehindExample
        Inherits System.Web.UI.Page
    
        Protected Label1 As System.Web.UI.WebControls.Label
    
        Protected Sub Page_Load(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles Me.Load
    
            Dim uc As CodeBehindExampleUserControl = _
            CType(LoadControl("~/CodeBehindExampleUserControl.ascx"), _
            CodeBehindExampleUserControl)
            Label1.Text = CType(uc.FindControl("Label2"), _
            System.Web.UI.WebControls.Label).Text
    
        End Sub
    
    End Class
    
    public class CodeBehindExample : 
        System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.Label Label1;
    
        protected void Page_Load(object sender, 
            System.EventArgs e)
        {
            CodeBehindExampleUserControl uc =
              (CodeBehindExampleUserControl)LoadControl
              ("~/CodeBehindExampleUserControl.ascx");
            Label1.Text = ((System.Web.UI.WebControls.Label)
                uc.FindControl("Label2")).Text;
    
        }
    }
    

    Observe que para o controle Label declarado na página .aspx, há uma declaração correspondente no arquivo code-behind.Além disso, a classe code-behind é uma definição de classe normal e não uma classe parcial.

  2. Crie uma página Web usando o atributo CodeBehind da diretiva @ Controle, conforme mostrado no exemplo de código a seguir.

    <%@ Control Language="VB" AutoEventWireup="false" 
        CodeBehind="CodeBehindExampleUserControl.ascx.vb" 
        Inherits="CodeBehindExampleUserControl" %>
    <asp:Label id="Label2" >
    Label text in user control.
    </asp:Label>
    
    <%@ Control Language="C#" AutoEventWireup="false" 
        CodeBehind="CodeBehindExampleUserControl.ascx.cs" 
        Inherits="CodeBehindExampleUserControl" %>
    <asp:Label id="Label2" >
    Label text in user control.
    </asp:Label>
    
    Public Class CodeBehindExampleUserControl
        Inherits System.Web.UI.UserControl
    
        Protected Sub Page_Load(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles Me.Load
            ' User control code.
        End Sub
    
    End Class
    
    public class CodeBehindExampleUserControl : 
        System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, 
            System.EventArgs e)
        {
            // User control code.
        }
    }
    

    Observe que, assim como o arquivo code-behind para a página da Web, o arquivo code-behind para o controle de usuário usa uma classe e não uma classe parcial.

  3. Compilar a página da Web e o controle de usuário e colocar a biblioteca de códigos para a pasta Bin do aplicativo.Usar o atributo CodeBehind requer que você compile todas as classes code-behind em uma única biblioteca de códigos e coloque o arquivo .DLL resultante na pasta Bin.Para a página da Web e o exemplo de controle de usuário, a instrução de compilação que compila os dois arquivos code-behind é:

    vbc /target:library /nologo /out:bin\CodeBehindExample.dll /r:System.dll,System.Web.dll CodeBehindExample.aspx.vb CodeBehindExampleUserControl.ascx.vb
    
    csc /target:library /nologo /out:bin\CodeBehindExample.dll CodeBehindExample.aspx.cs CodeBehindExampleUserControl.ascx.cs
    
  4. Solicite à página da Web CodeBehindExample.aspx em um navegador para que verifique se ela funciona no .NET Framework 2.0.

Para converter uma página da Web e controle de usuário usando o atributo CodeBehind para o modelo ASP.NET 2.0 code-behind

  1. Fazer alterações na página da Web do arquivo .aspx para coincidir com a seguinte exemplo de código.

    <%@ Reference Control="~/CodeBehindExampleUserControl.ascx" %>
    <%@ Page Language="VB" AutoEventWireup="false" 
        CodeFile="CodeBehindExample.aspx.vb" 
        Inherits="CodeBehindExample" %>
    
    <!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 >
        <title>Code-Behind Example</title>
    </head>
    <body>
        <form id="form1" >
        <div>
          <asp:Label id="Label1" ></asp:Label>        
        </div>
        </form>
    </body>
    </html>
    
    <%@ Reference Control="~/CodeBehindExampleUserControl.ascx" %>
    <%@ Page Language="C#" AutoEventWireup="true"  
        CodeFile="CodeBehindExample.aspx.cs" 
        Inherits="CodeBehindExample" %>
    
    <!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 >
        <title>Code-Behind Example</title>
    </head>
    <body>
        <form id="form1" >
        <div>
          <asp:Label id="Label1" ></asp:Label>
        </div>
        </form>
    </body>
    </html>
    

    Um atributo CodeFile agora é usado em vez de um atributo CodeBehind na diretiva @ Page do arquivo .aspx.Uma diretiva @ Referência é usada para fazer referência ao controle de usuário em uma página code-behind.

  2. Fazer alterações nas suas páginas Web em seu arquivo code-behind para coincidir com o seguinte exemplo de código.

    Partial Class CodeBehindExample
        Inherits System.Web.UI.Page
    
    
        Protected Sub Page_Load(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles Me.Load
    
            Dim uc As CodeBehindExampleUserControl = _
            CType(LoadControl("~/CodeBehindExampleUserControl.ascx"), _
            CodeBehindExampleUserControl)
            Label1.Text = CType(uc.FindControl("Label2"), _
            System.Web.UI.WebControls.Label).Text
    
        End Sub
    End Class
    
    public partial class CodeBehindExample : 
        System.Web.UI.Page 
    {
        protected void Page_Load(object sender, 
            System.EventArgs e)
        {
            CodeBehindExampleUserControl uc =
                (CodeBehindExampleUserControl)LoadControl
                ("~/CodeBehindExampleUserControl.ascx");
            Label1.Text = ((System.Web.UI.WebControls.Label)
                uc.FindControl("Label2")).Text;
    
        }
    }
    

    No arquivo code-behind, uma classe parcial é usada para definir codificação adicional para a página .aspx.Agora não é necessário declarar o controle Label usado na página .aspx, como era o caso com a página anterior code-behind baseada no atributo CodeBehind.

  3. Fazer alterações em seu arquivo .aspx de controle do usuário para coincidir com o seguinte exemplo de código.

    <%@ Control Language="VB" AutoEventWireup="false" 
        CodeFile="CodeBehindExampleUserControl.ascx.vb" 
        Inherits="CodeBehindExampleUserControl" %>
    <asp:Label id="Label2" >
    Label text in user control.
    </asp:Label>
    
    <%@ Control Language="C#" AutoEventWireup="true" 
        CodeFile="CodeBehindExampleUserControl.ascx.cs" 
        Inherits="CodeBehindExampleUserControl" %>
    <asp:Label id="Label2" >
    Label text in user control.
    </asp:Label>
    

    Semelhante à página da Web, o controle de usuário agora usa um atributo CodeFile em vez do atributo CodeBehind.

  4. Fazer alterações em seu arquivo .aspx de controle do usuário para coincidir com o seguinte exemplo de código.

    Partial Class CodeBehindExampleUserControl
        Inherits System.Web.UI.UserControl
    
        Protected Sub Page_Load(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles Me.Load
            ' User control code.
        End Sub
    End Class
    
    public partial class CodeBehindExampleUserControl : 
        System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, 
            System.EventArgs e)
        {
            // User control code.
        }
    }
    

    Semelhante ao arquivo code-behind da página da Web, o arquivo code-behind do controle de usuário agora usa um classe parcial.

  5. Exclua o arquivo CodeBehindExample.dll a partir da pasta bin que foi criada no procedimento anterior.

    ASP.NET 2.0 compilará sua página na primeira solicitação junto com seus arquivos code-behind.

  6. Solicite a página da Web CodeBehindExample.aspx e verifique se ela funciona como antes.

Consulte também

Conceitos

Visão geral sobre ASP.NET lado a lado

Outros recursos

Migrando para ASP.NET