Atenção: esse artigo tem um vídeo complementar. Clique e assista!
Neste artigo veremos como criar controles personalizados para o ASP.NET. Criaremos um “ASP.NET Server control”, também conhecido como Web Custom Control. Veremos como adicionar propriedades, funcionalidades no servidor e funcionalidades no cliente com JavaScript.
Para que serve
Neste artigo veremos como criar controles totalmente personalizados, de acordo com suas necessidades de forma inteligente e reaproveitável. Ao criar controles, estamos reutilizando código, utilizando boas práticas de programação orientada a objetos (POO), visto que nossa classe (o controle) poderá ser utilizada em vários projetos, sem replicação de código.
Em que situação o tema é útil
Além de reaproveitar código de forma eficiente, controles personalizados podem facilitar a manutenção, e até ser uma fonte de renda adicional. Os conhecimentos aqui adquiridos são úteis para serem aplicados em qualquer projeto Web, visto que a criação de um controle independe de outros pontos do projeto, além de ser uma forma de modularização.
Resumo do DevMan
Frequentemente necessitamos de controles que tenham um comportamento personalizado, especial para determinado tipo de aplicação ou ainda um controle que reproduza um comportamento padronizado em todos os projetos da empresa. Nesse caso o melhor a fazer é criar controles customizados. Com eles você pode manter a Orientação a Objetos e utilizá-la para deixar o código mais funcional, mais fácil de ler, de estender e porque não, mais elegante. As características parametrizáveis do controle ficam armazenadas em propriedades, da mesma forma utilizada com os controles padrão do ASP.NET e também possuirá métodos e eventos, com toda a lógica encapsulada e separada do código da página Web, tornado-a mais limpa.
Criar aplicações inteligentes para web deixou de ser há um bom tempo apenas formulários HTML com acesso à base de dados. O nível de interação com o usuário deve ser grande, para que ele tenha uma boa experiência de uso e consiga realizar as operações sem pensar e sem treinamento. Além de propiciar um retorno sobre o investimento, as aplicações quando desenvolvidas devem criar códigos que possam ser facilmente incorporados em projetos futuros. Isto permite que a cada aplicação criada, recursos possam ser reaproveitados, e assim, o custo do projeto tende a diminuir, deixando-o mais rentável e competitivo.
Quando disse que o usuário deve ser capaz de realizar operações sem pensar, isto não é apenas uma exigência da interface, mas é também uma exigência do seu usuário interno, e da sua equipe de desenvolvimento. Devemos pensar ao escrever código que outras pessoas possam ler e dar manutenção. Ao criar componentes e controles personalizados o mesmo cuidado deve ser tomado.
Um conceito muito importante para os controles é saber como eles são renderizados. Sabemos que o padrão de desenvolvimento de software para a internet é o HTML, mas cada plataforma possui seus controles personalizados, como por exemplo, calendários. Sabemos também que em HTML não existe um elemento “calendário”, mas certamente já vimos um calendário na web. O ASP.NET possui um controle padrão de calendário, que se você arrastar para o modo de design, e rodar a página, um calendário será exibido no navegador. O que na verdade acontece é que o controle é renderizado em HTML como tabelas, ou seja, o calendário do ASP.NET possui um processo de transformação para tabela. Isto acontece com todos os controles. A textbox do asp.net vira um “<input type=”text”>” do HTML, e assim por diante.
Parte prática
Nesta parte prática, vou mostrar como criar um controle personalizado, similar a um DropDownList (combo box). A grande diferença é que este controle pode receber imagens como item, inclusive cores de fundo. Em projetos com um design mais sofisticado, este controle pode ser de grande utilidade. A Figura 1 mostra o resultado que obteremos ao final do artigo.
Figura 1. Controle personalizado
Cada vez mais o programador precisa pensar na usabilidade e experiência do usuário. Este tipo de controle, se bem aplicado, pode deixar a experiência do usuário mais rica e intuitiva, diminuindo custo de treinamento e suporte. É possível inclusive exibir gif animados e outros tipos de mídia em cada item, deixando a interatividade ainda maior, sem contar o fato de ser compatível com os principais navegadores.
O foco deste projeto será não somente como fazê-lo, mas será levado em conta aspectos de criação do controle para que ele seja efetivamente “plug and play”, ou seja, tudo que for necessário estar encapsulado em uma .dll, e não com inúmeros arquivos soltos. Veremos também como criar javascript de forma mais isolada, com menos risco de conflitar com outros javascripts existentes em outros controles.
Abra o Visual Studio e crie um Asp.Net Server Control, conforme Figura 2. Para este exemplo utilizaremos o framework 3.5 e o Visual Studio 2008 com C# para o controle e Vb.Net para o projeto web.
Figura 2. Crie um projeto do tipo ASP.NET Server Control
Crie um arquivo de classe chamado “Item.cs”, conforme Listagem 1. Após referenciar as bibliotecas e definir o namespace para “ASPNetMagazineSC”, vamos criar uma classe item. Esta classe é bem simples, e terá apenas propriedades, descritas na Tabela 1. Foram criados dois construtores, um sem parâmetro e outro com todos os parâmetros.
Note na linha 10 da Listagem 1 que há o atributo “[Serializable]”, que permite a classe ser serializada. Isto será utilizado na Listagem 2, quando os itens serão atribuídos ao ViewState.
View State é um recurso do ASP.NET que permite que controles servidores possam manter seu próprio estado durante uma sessão do usuário. Isto é, o controle é capaz de “lembrar” suas configurações enquanto o usuário navega no site. Essas informações ficam armazenadas no browser e trafegam a cada requisição.
Atributo de serialização - [Serializable]
Informar que uma classe pode ser serializada significa que ela pode ter uma representação em outro formato, como texto, por exemplo. Um exemplo muito utilizado é em serviços web, quando uma classe é serializada em XML, ou seja, sua estrutura passa a ter uma representação XML. Quando atribuímos a lista ao viewstate, o .net serializa o objeto, ou seja, precisa converter em um formato texto para enviar junto com a resposta HTML. Quando o formulário é submetido pelo usuário, ou seja, quando ocorre o postback, o objeto é desserializado, recuperando seu estado original.
Confira outros conteúdos:
Teste unitário com NUnit
Como migrar projetos do ASP.NET MVC...
Crie relatórios com o Stimulsoft...
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.