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.5 answers
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.
- crie uma nova classe na applcation web chamada Literal.cs
-
Colocar em código semelhante ao seguinte para a defenição de classe:
namespace CustomControls { public class Literal : System.Web.UI.WebControls.Literal { } }
-
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.
-
Adicione o novo controlo à sua Página:
Separar O Método Do Projecto
- criar um novo sítio Web vazio (ASP.Net).
- adicionar um novo ASP.Net biblioteca de controle do servidor chamada CustomControls para a solução.
-
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 { } }
Adicione uma referência ao Projeto CustomControls ao seu site.
-
Adicione o registo de montagem ao topo da sua página aspx:
-
Adicione uma nova instância do controlo ao seu Página:
No Método App_Code
- criar um novo sítio Web vazio (ASP.Net).
-
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 { } }
-
Registe o espaço de montagem/nomes para app_code na sua página aspx adicionando a seguinte linha ao topo
-
Adicione uma instância do novo controlo à sua Página:
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" />
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:
- 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
- Se criaste o .ficheiro cs na pasta App_Code,
ASP.App_Code
deverá trabalho