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.