Adicionando atributos em objetos no WebForm.

by Felipe Oriani 22. maio 2009 11:15

Olá Pessoal, vou deixar aqui uma boa prática muito comum que para programadores que vieram do Php oudo Asp para o ASP.Net costumavam fazer e agora podem fazer da mesma formaem ASP.Net. Irei demonstrar como adicionar rapitamente um atributo na tag HTML dosWeb Controls gerada peloASP.Net em tempo de execução.

O Problema

Na versão atualdo ASP.Net (3.5) e em suas versões anteriores, temos um problema quando desejamos manipular umatag HTML através de Javascript, ou seja, as tags que são utlizadas para renderizar um TextBox, CheckBox ou uma ComboBox  por exemplo, sãotags que são escritas por marcações definidas pela próprio framework, fazendo com que elas se encarreguem de gerara tag HTML correspondente ao código aplicadono ASP.Net para ser interpretado pelo Browser, o que nos impede de adicionar funcionalidadesclient-side utilizando do Javascript para determinados eventos pré-definidos durante o desenvolvimento de uma página.

Como resolver

Todos os controles que herdam da classeSystem.Web.UI.WebControls.WebControl contém uma propriedade chamadaAttributes que representa uma instancia da classe System.Web.UI.AttributeCollection. É através desta propriedade que iremos adicionar atributosas tags que serão utilizadas para renderizar em nosso HTML. Esta classe contém métodossemelhantes a um Dictonary, ou seja, pode-se incluir nesta valores do tipo string queserão representados por umachave, onde a chave é o atributo que será iniciado e o valor que será o que será aplicado ao atributo determinado pelachave. Em tempo de executação, existem duas formas de se aplicar os atributos, mas ambas refletem o mesmo resultado, veja como proceder:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

   txtCampo.Attributes("onblur") = "this.className='textBox';"
   txtCampo.Attributes("onfocus") = "this.className='textBox_focus';"
   btnCancelar.Attributes("onclick") = "return confirm('Deseja cancelar a operação ?');" 

End Sub

O exemplo ilustra o cenário onde um campo do tipo TextBox, nomeado como txtCampo seja aplicado os eventos onblur e onfocus o código javascript descrito (que tem porobjeto alterar o atributoclass datag input), enquando o outro código que exemplifica a atribuição do evento onclick em uma instância deum Button, onde o código javascript exibe uma caixa de confirmação com uma mensagem. Neste último caso, temos uma propriedade queja nos facilita este acesso ao onclick em client-side queé a OnClientClick da instancia deum Button, onde podemos atribuir umafunção javascript.

Novidades

Na versão 4.0 do ASP.Net que está para ser lançada junto ao Visual Studio 2010, espera-se que alguns destes problemas como o controle da saída HTML do Webform seja melhorada, assim teremosmaior liberdade em nosso desenvolvimento, buscando fazer um código limpo, leve e objetivo.

Tags: ,

.Net Framework | ASP.Net

Comentários (5) -

Gaz Pieprzowy
Gaz Pieprzowy United Kingdom
5/1/2011 08:39:08 #

Hi. Is it possible to translate this into my language and use it on my blog?

Thanks for the info.

Gaz

dich vu SEO
dich vu SEO United States
27/1/2011 00:59:48 #

<a href="www.vietnamseo.org/dich-vu-seo">dich vu SEO</a><br>I recently came across your website and have been reading along. I thought I would leave my first comment. I don't know what to say except that I have enjoyed reading. Nice web. I will keep visiting this website very often. Thank for your post.

mbt sandals
mbt sandals People's Republic of China
13/5/2011 17:55:43 #

This is a very good blog. I appreciate very much this text, thank you.

Nike 6.0 Shoes
Nike 6.0 Shoes People's Republic of China
1/7/2011 01:29:45 #

Terrific work! This is the type of information that are meant to be shared around the web. Disgrace on the seek for not positioning this post higher! Come on over and discuss with my web site . Thank you =)

Nike 6.0 Shoes
Nike 6.0 Shoes People's Republic of China
1/7/2011 01:30:19 #

Simply want to say your article is as surprising. The clearness in your post is simply great and i can assume you are an expert on this subject. Fine with your permission let me to grab your RSS feed to keep up to date with forthcoming post. Thanks a million and please continue the rewarding work.

Sea Breeze Travels
Sea Breeze Travels United Kingdom
16/7/2011 04:52:28 #

I simply wanted to add a comment here to say thanks for you very nice ideas. Blogs are troublesome to run and time consuming therefore I appreciate when I see well written material. Your time isn't going to waste with your posts. Thanks so much and carry on You'll defintely reach your goals! have a great day!

Carbon CopyPro
Carbon CopyPro United States
22/11/2011 00:44:14 #

http://www.myonlinegameplan.com
This is a very good blog. I appreciate very much this text, thank you.

Carbon CopyPro
Carbon CopyPro United States
28/11/2011 04:47:55 #

http://www.myonlinegameplan.com
You are so awesome.  I can't believe I missed this blog for so long.  Its just great stuff all round about . Its very well written blog. Thanks!..

Little Ella Moss
Little Ella Moss United States
1/2/2012 01:21:25 #

I am glad to sharing your thing, let me know so much about your information.
http://www.shopjuicebox.com/

Comentar

  Country flag

biuquote
  • Comentário
  • Pré-visualização
Loading

Sobre

Sou Felipe Oriani e trabalho com desenvolvimento web desde 2004, com tecnologias Microsoft como Asp e Asp.Net utilizando as linguagens C# e Vb.Net. Bacharel em Ciência da Computação pela Escola de Engenharia de Piracicaba,  MCTS (.Net Framework 3.5, ASP.NET Applications). Conheça um pouco mais sobre meu CurrículumVeja mais 

Social

profile for Felipe at Stack Overflow, Q&A for professional and enthusiast programmers

Selos

MCTS .Net Framework 3.5, ASP.NET Developer

MCP - Microsoft Certified Professional