Usar o .NET do Visual C# para trabalhar com arquivos de classe de código atrás em um aplicativo ASP.NET
Este artigo descreve como desenvolver .aspx páginas que usam arquivos de classe de código em aplicativos do Microsoft ASP.NET. Os exemplos de código neste artigo incluem os requisitos para arquivos de classe de código atrás que são pré-compilados e arquivos de classe de código atrás que são compilados sob demanda.
Versão original do produto: ASP.NET
Número de KB original: 308143
Requisitos
A lista a seguir descreve o hardware, software e infraestrutura de rede recomendados que você precisa:
- Windows
- .NET Framework
- IIS (Serviços de Informações da Internet)
Criar um aplicativo Web ASP.NET usando o Visual C# .NET
Esta seção demonstra como criar um novo aplicativo Web ASP.NET chamado CodeBehindSamples.
- Inicie o Visual Studio .NET.
- No menu arquivo, aponte para novo e, em seguida, clique em Project.
- Em Tipo de Projeto, clique em Projetos do Visual C#. Em Modelos, clique em ASP.NET Aplicativo Web.
- Na caixa Nome , digite CodeBehindSamples. Na caixa Localização, digiteo ServerName. Se você estiver usando o servidor local, deixe o Local como
http://localhost
.
Usar arquivos de classe de código atrás
Se você usar arquivos de classe de código atrás com .aspx páginas, poderá separar o código de apresentação da lógica principal do aplicativo (ou code-behind). O arquivo de classe code-behind é compilado para que ele possa ser criado e usado como um objeto. Isso permite o acesso às suas propriedades, seus métodos e seus manipuladores de eventos. Para que isso funcione, a página .aspx deve especificar para herdar da classe base code-behind. Para fazer isso, use o Inherits
atributo para a @ Page
diretiva. A página .aspx herda da classe code-behind e a classe code-behind herda da Page
classe.
Por padrão, se você estiver usando o Visual Studio .NET, um Codebehind
atributo será adicionado à @ Page
diretiva. O .NET Framework não usa esse atributo de fato. Em vez disso, o Visual Studio .NET usa esse atributo para manter uma referência ao arquivo code-behind associado para a página .aspx.
Para demonstrar como o Visual Studio .NET usa o Codebehind
atributo, remova o Codebehind
atributo. Você não pode mais clicar com o botão direito do mouse na página .aspx e, em seguida, clicar em Exibir Código. Esse comportamento ocorre porque o Visual Studio .NET não contém mais uma referência para o arquivo de classe que ele pode usar para a página. Lembre-se de que não é assim que o .NET Framework usa arquivos de classe de código atrás, mas como o Visual Studio .NET gerencia esses arquivos de projeto.
Usar o atributo Herda com classes pré-compiladas
Se você pré-compilar suas classes de código atrás em um assembly, poderá usar o Inherits
atributo para especificar a classe da qual herdar. Nesse cenário, você não precisa incluir o arquivo de classe de código real ao implantar o aplicativo. Em vez disso, você deve implantar o assembly e a página .aspx. Você deve colocar o assembly na Bin
pasta do aplicativo ao implantar o aplicativo.
Esta seção demonstra como criar um novo Formulário Web que usa a abordagem pré-configurada e herda da classe code-behind.
Para adicionar um novo Formulário Web chamado InheritSample.aspx ao projeto do .NET do Visual Studio, siga estas etapas:
- Em Gerenciador de Soluções, clique com o botão direito do mouse no nó do projeto, clique em Adicionar e clique em Adicionar Formulário Web.
- Na caixa Nome , digite InheritSample.aspx e clique em Abrir.
Alterne para a exibição Design e adicione um controle de Rótulo de Formulário Web à página .aspx.
Clique com o botão direito do mouse na página .aspx e clique em Exibir Código. O arquivo code-behind é aberto no editor.
No arquivo code-behind, adicione o seguinte código ao manipulador de
Page_Load
eventos:private void Page_Load(object sender, System.EventArgs e) { Label1.Text = "(Precompiled): Page_Load fired!"; }
Observação
Esse código demonstra apenas que a classe code-behind está envolvida no exemplo em tempo de execução nas etapas posteriores.
Alterne do arquivo de classe code-behind para a página .aspx no editor e, em seguida, alterne para a exibição HTML.
Na parte superior da página, examine o código da
@ Page
diretiva. O código deve ser semelhante ao seguinte código padrão:<%@ Page language="c#" Codebehind="InheritSample.aspx.cs" AutoEventWireup="false" Inherits="CodeBehindSamples.InheritSample" %>
Neste exemplo, a página .aspx herda da classe code-behind nomeada
InheritSamples
noCodeBehindSamples
namespace. Por padrão, um aplicativo Web criado no Visual Studio .NET usa umaProjectName.ClassName
estrutura para o valor doInherits
atributo.No menu Arquivo , clique em Salvar Tudo para salvar o Formulário Web e outros arquivos de projeto associados.
No IDE do .NET do Visual Studio, no menu Build , clique em Compilar para criar o projeto.
No menu Projeto , clique em Mostrar Todos os Arquivos.
Em Gerenciador de Soluções, clique para expandir a
Bin
pasta. O assembly gerado quando você compila o projeto da seção anterior (que é CodeBehindSamples.dll neste exemplo) é exibido naBin
pasta.No Visual Studio .NET, clique com o botão direito do mouse na página em Gerenciador de Soluções e clique em Exibir no Navegador para executar o código. O rótulo é preenchido com o seguinte valor:
(Precompiled): Page_Load fired!
Usar o atributo Src e compilar sob demanda
Se os arquivos de classe code-behind forem compilados sob demanda em vez de pré-compilados, você deverá usar o Src
atributo para especificar o caminho relativo do arquivo de classe code-behind. Certifique-se de incluir o arquivo de classe real ao usar esse método para implantar o aplicativo.
Observação
Para obter mais informações sobre possíveis problemas ao desenvolver seus aplicativos no Visual Studio .NET com o uso do Src
atributo, consulte a seção Referências neste artigo. O Visual Studio .NET foi projetado para aproveitar a pré-execução do código do aplicativo em um assembly, em vez de usar a abordagem de compilação sob demanda descrita nesta seção.
Para adicionar um novo Formulário Web chamado SrcSample.aspx ao seu projeto no Visual Studio .NET, siga estas etapas:
- Em Gerenciador de Soluções, clique com o botão direito do mouse no nó do projeto, clique em Adicionar e clique em Adicionar Formulário Web.
- Na caixa Nome , digite SrcSample.aspx e clique em Abrir.
Alterne para a exibição Design e adicione um controle de Rótulo de Formulário Web à página .aspx.
Clique com o botão direito do mouse na página .aspx e clique em Exibir Código. O arquivo code-behind é aberto no editor.
No arquivo code-behind, adicione o seguinte código ao
Page_Load
evento:private void Page_Load(object sender, System.EventArgs e) { Label1.Text = "(Src): Page_Load fired!"; }
Alterne do arquivo de classe code-behind para a página .aspx no editor e, em seguida, alterne para a exibição HTML.
Na parte superior da página, examine o código da
@ Page
diretiva. O código deve ser semelhante ao seguinte código padrão:<%@ Page language="c#" Codebehind="SrcSample.aspx.cs" AutoEventWireup="false" Inherits="CodeBehindSamples.SrcSample"%>
Para simplificar este exemplo, exclua o arquivo Global.asax do seu projeto. Isso só é feito neste exemplo para evitar erros adicionais relacionados à página de código atrás do arquivo Global.asax .
No menu Arquivo , clique em Salvar Tudo para salvar o Formulário Web e outros arquivos de projeto associados.
Observação
Como você deseja que o arquivo de classe code-behind para este exemplo seja compilado sob demanda, não crie a solução agora.
Se você seguiu as etapas listadas na seção Usar o atributo Herda com classes pré-compiladas , deverá excluir o assembly no
Bin
diretório do aplicativo antes de seguir o restante das etapas desta seção.Para obter mais informações, visite a seção Solução de problemas deste artigo.
Para executar a página, inicie a Internet Explorer e insira manualmente a URL da página. Não selecione o Modo de Exibição no Navegador ou as opções Procurar Com no IDE do .NET do Visual Studio. Caso contrário, se você estiver usando o Visual Studio .NET 2003, a página de code-behind será pré-compilada em um assembly localizado no
Bin
diretório por padrão. Depois de exibir a página, você receberá uma mensagem de erro semelhante à seguinte:Não foi possível carregar o tipo 'CodeBehindSamples.SrcSample'.
Esse erro ocorre porque o arquivo de classe code-behind ainda não foi compilado e você ainda não incluiu o
Src
atributo para fazer referência ao arquivo de classe code-behind.Adicione o
Src
atributo à diretiva da@ Page
seguinte maneira:<%@ Page language="c#" Codebehind="SrcSample.aspx.cs" AutoEventWireup="false" Inherits="CodeBehindSamples.SrcSample" Src="SrcSample.aspx.cs"%>
O
Src
atributo é listado com o caminho relativo do arquivo de classe code-behind (SrcSample.aspx.cs) e o valor doInherits
atributo é definido como referênciaCodeBehindSamples.SrcSample
.No menu Arquivo , clique em Salvar Tudo para salvar o Formulário Web e outros arquivos de projeto associados. Lembre-se de que não crie a solução porque você deseja que o arquivo de classe code-behind para este exemplo seja compilado sob demanda.
Para executar a página, inicie a Internet Explorer e insira manualmente a URL da página. Não selecione o Modo de Exibição no Navegador ou as opções Procurar Com no IDE do .NET do Visual Studio. Caso contrário, se você estiver usando o Visual Studio .NET 2003, a página de code-behind será pré-compilada em um assembly localizado no
Bin
diretório por padrão. Neste ponto, a página deve ser carregada no navegador e o rótulo é preenchido com o seguinte valor:(Src): Page_Load fired!
O arquivo de classe code-behind foi compilado com demanda e funções corretamente.
Solução de problemas
Você pode receber uma mensagem de erro semelhante à seguinte se você pré-compilar seu aplicativo no Visual Studio .NET e tentar aplicar a abordagem de compilação sob demanda usando o
Src
atributo:Mensagem de erro do compilador: CS1595: 'ProjectName.CodeBehindClassName' é definido em vários lugares; usando a definição de '%windir%:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\YourProjectName\d1444413\36fce407\assembly\dl2\009389be\231afa2d_d586c301\YourAssemblyName.DLL'
Tenha em mente que os nomes de diretório seguindo YourProjectName no caminho listado na mensagem de erro provavelmente serão diferentes porque ASP.NET manipula automaticamente a construção dos diretórios e seus nomes.
Se você usar o
Src
atributo, deverá seguir estas etapas para resolve o problema associado à mensagem de erro:Exclua o diretório YourProjectName referenciado na mensagem de erro. Você também pode ter que executar o
iisreset
comando no prompt de comando antes de concluir esta etapa. Caso contrário, você poderá receber a seguinte mensagem de erro:Não é possível excluir GeneratedName.dll: o acesso é negado.
Verifique se o disco não está cheio ou protegido por gravação e se o arquivo não está em uso no momento.Exclua o assembly no
Bin
diretório do aplicativo.Para executar a página, inicie a Internet Explorer e insira manualmente a URL na página. Não selecione o Modo de Exibição no Navegador ou as opções Procurar Com no IDE do .NET do Visual Studio. Caso contrário, se você usar o Visual Studio .NET 2003, a página de code-behind será pré-compilada em um assembly localizado no
Bin
diretório por padrão.
Observação
A Microsoft recomenda que você use a abordagem pré-compilada em vez do método compilado sob demanda (usando o
Src
atributo) se você desenvolver seus aplicativos com o Visual Studio .NET para evitar esses tipos de problemas.Se você quiser ou se precisar conter suas páginas do Formulário Web em um único arquivo, desenvolva suas páginas .aspx para conter seu código em vez do arquivo de classe de código atrás.
Para obter mais informações sobre como desenvolver Web Forms de arquivo único no Visual Studio .NET, confira Documentação técnica aposentada do Visual Studio 2003.
Se você não pré-compilar o arquivo de classe code-behind e se não adicionar o
Src
atributo à@ Page
diretiva ou se o caminho virtual do atributo não estiver correto, você receberá a seguinte mensagem de erro:Não foi possível carregar o tipo 'CodeBehindSamples.SrcSample'.
Quando você implanta .aspx páginas, se os arquivos de classe de código associados forem pré-compilados, você só precisará implantar o assembly na
Bin
pasta do aplicativo. Você não precisa implantar os arquivos de classe de código real com o aplicativo.Ao implantar .aspx páginas, se os arquivos de classe associados não forem pré-compilados, você deverá implantar os arquivos de classe de código atrás com o aplicativo. Além disso, você deve adicionar o
Src
atributo à@ Page
diretiva porque o arquivo de classe deve estar disponível quando ele é compilado sob demanda.
Referências
Para obter mais informações sobre assemblies, consulte Assemblies.
Para obter mais artigos, exemplos e outros recursos relacionados à programação ASP.NET, consulte ASP.NET.
Para obter mais informações sobre a diretiva @ Page e seus vários atributos, consulte @ Page.
Para obter mais informações sobre a sintaxe geral Web Forms, consulte Web Forms Sintaxe.
Para obter mais informações, consulte ASP.NET Visão geral do modelo code-behind.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários