ASP.NET Core -  Personalizar o Model Binding


Hoje vamos apresentar bem rapidamente dois conceitos relacionados ao model binding na ASP .NET Core.

As aplicações MVC e Web APis contém vários atributos que podem ser usados para direcionar seu comportamento de model binding padrão para outra fonte.

Por exemplo, você pode especificar se a vinculação é obrigatória para uma propriedade ou se ela nunca deve ocorrer usando os atributos [BindRequired] ou [BindNever].

Como alternativa, você pode substituir a fonte de dados padrão e especificar a fonte de dados do model binder. Veja abaixo uma lista dos atributos de model binding que podemos usar para sobrescrever o comportamento padrão:

Os atributos são ferramentas muito úteis quando você precisa substituir o comportamento padrão do model binding.

Personalizar a validação e o model binding globalmente

O comportamento do sistema de validação e model binding é orientado pelo ModelMetadata que descreve:

Os aspectos do comportamento do sistema podem ser configurados globalmente adicionando um provedor de detalhes a MvcOptions.ModelMetadataDetailsProviders.

O MVC tem alguns provedores de detalhes internos que permitem configurar o comportamento, como desabilitar a validação ou o model binding de determinados tipos.

Para desabilitar o model binding em todos os modelos de um determinado tipo, adicione uma chamada à classe ExcludeBindingMetadataProvider no método ConfigureServices da classe Startup.

Por exemplo, para desabilitar o model binding em todos os modelos do tipo System.Version:

services.AddMvc().AddMvcOptions(options =>
    options.ModelMetadataDetailsProviders.Add(
        new ExcludeBindingMetadataProvider(typeof(System.Version))));

Para desabilitar a validação nas propriedades de um determinado tipo, adicione uma chamada à classe SuppressChildValidationMetadataProvider no método ConfigureServices da classe Startup.

Por exemplo, para desabilitar a validação nas propriedades do tipo System.Guid:

services.AddMvc().AddMvcOptions(options =>
    options.ModelMetadataDetailsProviders.Add(
        new SuppressChildValidationMetadataProvider(typeof(System.Guid))));

Assim você pode desabilitar globalmente o model binding usando um critério.

E por hoje era isso...

"Aquele que nem mesmo a seu próprio Filho poupou, antes o entregou por todos nós, como nos não dará também com ele todas as coisas ? "
Romanos 8:32

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

Referências:


José Carlos Macoratti