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.

  1. Inicie o Visual Studio .NET.
  2. No menu arquivo, aponte para novo e, em seguida, clique em Project.
  3. Em Tipo de Projeto, clique em Projetos do Visual C#. Em Modelos, clique em ASP.NET Aplicativo Web.
  4. 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.

  1. Para adicionar um novo Formulário Web chamado InheritSample.aspx ao projeto do .NET do Visual Studio, siga estas etapas:

    1. 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.
    2. Na caixa Nome , digite InheritSample.aspx e clique em Abrir.
  2. Alterne para a exibição Design e adicione um controle de Rótulo de Formulário Web à página .aspx.

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

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

  5. Alterne do arquivo de classe code-behind para a página .aspx no editor e, em seguida, alterne para a exibição HTML.

  6. 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 no CodeBehindSamples namespace. Por padrão, um aplicativo Web criado no Visual Studio .NET usa uma ProjectName.ClassName estrutura para o valor do Inherits atributo.

  7. No menu Arquivo , clique em Salvar Tudo para salvar o Formulário Web e outros arquivos de projeto associados.

  8. No IDE do .NET do Visual Studio, no menu Build , clique em Compilar para criar o projeto.

  9. No menu Projeto , clique em Mostrar Todos os Arquivos.

  10. 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 na Bin pasta.

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

  1. Para adicionar um novo Formulário Web chamado SrcSample.aspx ao seu projeto no Visual Studio .NET, siga estas etapas:

    1. 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.
    2. Na caixa Nome , digite SrcSample.aspx e clique em Abrir.
  2. Alterne para a exibição Design e adicione um controle de Rótulo de Formulário Web à página .aspx.

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

  4. 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!";
    }
    
  5. Alterne do arquivo de classe code-behind para a página .aspx no editor e, em seguida, alterne para a exibição HTML.

  6. 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"%>
    
  7. 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 .

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

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

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

  11. 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 do Inherits atributo é definido como referência CodeBehindSamples.SrcSample.

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

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

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

    2. Exclua o assembly no Bin diretório do aplicativo.

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