ASP .NET - Model Binding com Web Forms - Conceitos


O Model Binding é um dos novos recursos da versão 4.5 da plataforma .NET que agora também esta incorporado aos ASP .NET Web Forms. Então, você já conhece o model binding do ASP .NET MVC, vai poder usá-lo também em aplicações ASP .NET Web Forms.

O model binding é o processo de obtenção de objetos do modelo de entrada e saída dos controles, sem que você tenha que escrever um monte de código. Agora podemos vincular controles de dados diretamente aos métodos que fornecem as funcionalidades de selecionar, inserir, atualizar e excluir.

Quando os métodos são chamados você não tem que escrever muito código para acessar os valores que foram postados de volta em caso de atualização, inserção ou exclusão. Em vez disso, o modelo de ligação permite ter as propriedades de um determinado objeto do modelo automaticamente preenchida com os dados do postback.

Usando o model binding, os nomes dos elementos de entrada são utilizados para definir os valores das propriedades em uma instância da classe do modelo, que é então passado para o nosso método action POST.

O Model Binding é um recurso poderoso e personalizável que elimina o trabalho de lidar com solicitações HTTP, permitindo-nos trabalhar com objetos em vez de lidar com valores Request.Form[] e Request.QueryString[].

Dessa forma com o Model Binding é fácil criar e manter aplicações web com muitas informações. Quando você usa o Model Binding com os data templates dynamic você pode rapidamente adicionar ou alterar propriedades em seu modelo de dados, e, essas propriedades são corretamente renderizadas e processadas nos formulários web em todo o site.

Os templates dynamics é um recurso que foi introduzido no ASP.NET 3.5 SP1. Ele simplifica a tarefa da entrada de dados usando o os modelos do Entity Framework ou LINQ to SQL para gerar automaticamente todas as máscaras usadas para exibir, alterar ou inserir dados. O Controle dinâmico de dados são uma nova onda de controles declarativos que permitem desenvolver aplicações de dados simples de forma rápida.

Muitas aplicações são essencialmente orientada a dados, em vez de utilizar uma arquitetura n-camadas, os DDC manipulam diretamente os dados. A idéia por trás dos controles Dynamic Data é construir dinamicamente a view e as máscaras de edição, usando o ObjectContext do Entity Framework ou DataContext do LINQ to SQL. Para isso a ASP.NET 4.0 suporta os provedores personalizados usando o padrão de projeto Provider Model.

Usando os controles vinculados a dados de servidor, como GridView, DetailsView, FormView ou ListView, você pode especificar o nome de um método de dados para as propriedades:

Dentro desses métodos, você usa uma tecnologia de acesso a dados (como o Entity Framework) para realizar as operações de dados necessários. Nos métodos que atualizam os dados, você pode tirar vantagem do método TryUpdateModel para aplicar automaticamente os valores vinculados dos formulários para o modelo de dados.

Você também pode usar vários novos atributos para especificar a fonte de um valor de parâmetro. Estes atributos estão no namespace System.Web.ModelBinding.

Uma outra característica importante são os "Value Providers" que são úteis não só para uso com os controles vinculados de dados que podem utilizar a nova sintaxe do modelo de ligação.

Há uma série de provedores de valor, que lhe permitem usar atributos para configurar os parâmetros de métodos, como a ligação de dados e de filtragem automática. Os seguintes provedores de valor fazem parte do ASP.NET 4.5.

Por exemplo, aplicando-se o atributo QueryString a um parâmetro, significa que o valor do referido parâmetro é recuperado a partir de um valor de querystring com o mesmo nome.

A chave para compreender corretamente o poder do ASP .NET Model Binding é primeiro compreender o propósito do recurso Data Annotations que foi incluído na versão 3.5 da plataforma .NET.

O Data Annotations permite que usemos atributos para descrever os objetos de forma declarativa especificando o formato e outros metadados.

Para este recurso devemos usar o namespace System.ComponentModel.DataAnnotations pois é ele que provê atributos de classes (usados para definir metadados) e métodos que podemos usar em nossas classes para alterar as convenções padrão e definir um comportamento personalizado que pode ser usado em vários cenários.

Exemplo de uso de Data Annotations:

<StringLength(50)> _
<Required(ErrorMessage:="O nome do Aluno é obrigatório!")> _

Public Property
Nome() As String

Definimos assim uma cadeia de caracteres para designar e validar que o valor para o nome deve ser obrigatório.

Como parte do model binding no ASP .NET Web Forms 4.5 essas anotações são plenamente reconhecidas pelos controles web forms GridView, Repeater, FormView, etc.

Os controles agora possuem uma nova propriedade chamada 'ItemType' a qual permite especificar o tipo de item que é uma das chaves para poder usar os recursos do model binding.

Definir a propriedade ItemType é um passo simples que é necessário e é mostrado em quase todos os tutoriais, mas o valor real não é conhecido até que você comece a olhar para alguns dos outros benefícios.

Um grande benefício é a sua capacidade de ajudar na especificação dos ItemTemplates personalizados. Geralmente usamos a seguinte declaração <% #Eval("MinhaColuna")%> ou similar para vincular itens a um itemtemplate em grades ou repetidores.

É neste quesito que o ItemType irá se tornar seu melhor amigo, com essa propriedade especificada você pode fazer a vinculação ao seu objeto usando a a declaração: <% # Item.MinhaColuna%>.

Esse recurso no Visual Studio com o atributo ItemType configurado corretamente dará apoio ao IntelliSense completo para o item, isto significa que você não terá as situações em que você está digitando um nome de propriedade de forma incorreta.

Para mostrar todos os recursos do Model Binding vamos iniciar uma série de 6 tutoriais onde criaremos uma pequeno projeto ASP .NET Web Forms.

No próximo tutorial irei abordar o acesso e a exibição de dados usando o Model Binding com Web Forms.

Referências:


José Carlos Macoratti