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
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.
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.
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
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
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.
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.
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.
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.
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.
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