Controlo personalizado em ASP.NET C#

criei um simples controlo personalizado que só herda do controlo Literal, e ainda não tem Extensões, o código está vazio.

Espaço De Nomes: CustomControls

Nome da classe: Literal: System.Site.UI.WebControls.Literal

a próxima coisa que faço é registar este controlo na página aspx como se segue:

<%@ Register TagPrefix="web" Namespace="CustomControls" %>
(Li em poucos tutoriais que esta é uma das maneiras de registrá-la, além da web.config etc.)

[4] afinal, não há intelecto para mim, e pior-eu recebo um erro de processamento 'tag desconhecido do servidor: web' quando eu tento executar a página com o controle nela.

usei 'criar um novo projecto' e não um novo sítio web, caso esta informação seja necessária.

Qual pode ser o meu problema?

Obrigado antecipadamente.

Author: geevee, 2010-06-09

5 answers

Eis como o fiz, passo a passo a partir do nada. Este primeiro método utiliza um segundo projecto / montagem. Para a versão de App_code descer.

Método Do Projecto De Aplicação Web

    Criar um novo ASP.Net aplicação Web. Tome nota do nome, o meu é chamado WebApplication2. Se já tiver uma aplicação web existente, o que é provável, faça duplo-click na secção propriedades do seu projecto e verifique a propriedade "Assembly Name", ele.
  1. crie uma nova classe na applcation web chamada Literal.cs
  2. Colocar em código semelhante ao seguinte para a defenição de classe:

    namespace CustomControls
    {
        public class Literal : System.Web.UI.WebControls.Literal
        {
        }
    }
    
  3. Adicione a seguinte marca de Registo ao topo da sua página aspx

Se o seu nome de conjunto era diferente, então mude-o aqui. Reparei que quando fiz isto em VB.Net o espaço de nomes foi Aplicação web1.CustomControls em vez de apenas CustomControls como era em C#, meio estranho.

  1. Adicione o novo controlo à sua Página:

Separar O Método Do Projecto

  1. criar um novo sítio Web vazio (ASP.Net).
  2. adicionar um novo ASP.Net biblioteca de controle do servidor chamada CustomControls para a solução.
  3. Adicionar uma nova classe ao novo projecto chamado Literal (Estou usando C# Assim meu arquivo é chamado Literal.cs). Abaixo está o meu código super básico, que eu acredito que deve corresponder ao código descrito na pergunta.
    namespace CustomControls
    {
        public class Literal : System.Web.UI.WebControls.Literal
        {
        }
    }
    
  4. Adicione uma referência ao Projeto CustomControls ao seu site.

  5. Adicione o registo de montagem ao topo da sua página aspx:

  6. Adicione uma nova instância do controlo ao seu Página:

No Método App_Code

  1. criar um novo sítio Web vazio (ASP.Net).
  2. Adicione uma nova classe à Literal2 da pasta App_Code (estou a usar o C# para que o meu ficheiro se chame Literal2.cs). Abaixo está o meu código super básico, que eu acredito que deve corresponder ao código descrito na pergunta. Eu chamei-lhe 2 para que você possa usar isso em conjunto com o método descrito acima sem obter compilar erros

    namespace CustomControls
    {
        public class Literal2 : System.Web.UI.WebControls.Literal
        {
        }
    }
    
  3. Registe o espaço de montagem/nomes para app_code na sua página aspx adicionando a seguinte linha ao topo

  4. Adicione uma instância do novo controlo à sua Página:

Testei isto usando um estúdio visual e tudo funcionou bem para mim.
 26
Author: Peter, 2011-01-06 14:44:59

Também pode registar o seu controlo na web.configuração se você gostaria de usá-lo em outras páginas

<pages>
        <controls>
          <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          <add tagPrefix="web" namespace="MyProject.CustomControls" assembly="MyProject" />
        </controls>
      </pages>

Para o sítio Web, isto vai funcionar

<add tagPrefix ="web" namespace="ASP.App_Code.CustomControls" />
 2
Author: orjan, 2010-06-09 06:18:26

O problema está na tua marca {[[0]}: falha o nome do conjunto!

Deve tornar-se <%@ Register TagPrefix="web" Namespace="CustomControls" Assembly="YourAssemblyName" %>. Se você tem dificuldade em encontrar o nome do conjunto para sua classe aqui estão algumas dicas:

  1. se criou a classe dentro do projecto Visual Studio da aplicação web, ou num projecto DLL separado (Biblioteca partilhada), então carregue com o botão direito no projecto e vá para as propriedades para obter o nome do conjunto
  2. Se criaste o .ficheiro cs na pasta App_Code, ASP.App_Code deverá trabalho
Caso contrário, por favor, dê-nos algumas informações sobre o layout do projecto!
 2
Author: usr-local-ΕΨΗΕΛΩΝ, 2011-01-05 15:47:13
A coisa mais fácil a fazer é arrastar e largar o Literal.ascx na página (se a página estiver na mesma solução) .Se a página é outra solução, você pode adicionar o controle para VS caixa de ferramentas e arrastar e largar o controle na página.
 1
Author: Vijay Sirigiri, 2011-01-07 12:02:18
Esqueceste-te do atributo src.
<%@ Register TagPrefix="web" Namespace="CustomControls" Src="PathToYourCustomControl" %> 
 0
Author: , 2011-01-11 12:27:31