DataBinder

Dando uma vasculhada pelo Help do Visual Studio .NET 2005, me deparei com um novo recurso do ASP.NET 2.0, qual apresenta uma nova opção (mais simples) para criarmos expressões de DataBinding que, no ASP.NET 1.x fazemos através do método Eval da classe DataBinder, onde em um dos seus overloads, é passado como parametro a referencia à um objeto (geralmente “Container.DataItem”) que é de onde que o campo de dados será recuperado e exibido ao cliente.

Além deste parametro, é também passado uma string contendo o nome do campo ou propriedade a ser recuperada. Isso é em runtime avaliado e, consequentemente, renderizado para o cliente. Um exemplo do uso desta sintaxe é mostrada abaixo:

<%# DataBinder.Eval(Container.DataItem, “expressao”) %>

expressao é o nome da propriedade a ser recuperada. Existe ainda um outro parametro para o método Eval, que recebe também uma string contendo uma possível formatação para este campo, que depois de avaliado e retornado, o ASP.NET se encarrega também de aplicar a formatação.

Tudo isso agora se resumiu à chamada de um método, ou seja, temos agora uma forma compacta de fazer isso:

<%# Eval(“expressao”) %>

Isso é possível graças à um método protegido que temos na classe Page chamado Eval (que é herdado da classe TemplateControl). Se decompilarmos esse método, veremos que ele faz o trabalho semelhante ao que fazíamos no HTML da versão 1.x, ou seja, invoca o método DataBinder.Eval:

Protected Friend Function Eval(ByVal expression As String) As Object
      Me.CheckPageExists
      Return DataBinder.Eval(Me.Page.GetDataItem, expression)
End Function

Está aqui uma forma facilitada, mas ainda propícia à erros, já que apenas informamos uma string, para que o mesmo possa avaliar e retornar um valor, portanto, se não existir um campo correspondente, o erro somente será detectado em runtime, quando uma Exception for atirada.