balta.io balta.io
  • Cursos
  • Carreiras
  • Para sua Empresa
  • Agenda
  • Blog

Seja Premium
balta.io

  • Cursos
  • Carreiras
  • Para sua Empresa
  • Agenda
  • Blog
  • Player
Seja Premium

Entre ou Cadastre-se

  • Home
  • Artigos
  • Descomplicando o Model Binding no ASP.NET Core


Descomplicando o Model Binding no ASP.NET Core

Sumário

  1. Introdução
  2. [Bind] - Obtendo propriedades específicas
  3. [FromQuery] - Obtendo valores da cadeia de caracteres de consulta
  4. [FromRoute] - Obtendo valores de dados de rota
  5. [FromForm] - Obtendo valores de campos de formularios postado
  6. [FromBody] - Obtendo valores do corpo da solicitação
  7. Continue lendo
  8. Referências

Introdução

Este artigo tem o objetivo de introduzir às possíveis formas de manipular informações utilizando o ModelBinding.

[Bind] - Obtendo propriedades específicas

É possível que durante o processo de desenvolvimento surja situações onde seja necessário obter valores de propriedades especificas e ignorar outras. Para isto utilizamos o [Bind]. Assim ignorando propriedades não especificadas.

Código:

[HttpPost]
public IActionResult OnPost([Bind("Name, Email, IsActive")] User user)
    => throw new NotImplementedException();

No código acima pode-se ver o método OnPost que deve receber um usuário como paranêtro. Mas como temos interesse apenas em três campos específicos, declaramos eles com o Bind e assim receberemos os demais retornaram nulos ou caso tenham, um valor padrão.

Nota 1: Este comportamento relacionado aos atributos não especificados faz com que o [Bind] não seja uma boa opção em casos de edição já que ele não mantém o valor anterior das propriedades não especificadas.

[FromQuery] - Obtendo valores da cadeia de caracteres de consulta

Antes de obter os valores a partir de uma cadeia de caracteres de consulta vamos deixar claro o que ela é. A cadeia de caracteres de consulta ou QueryString é um modelo para atribuição de valores a parâmetros utilizando a URL (Uniform resource locator).

Exemplo: https://seudominio.com/controller/action/?Name=Joao&Email=mail@mail.com&IsActive=false&LastUpdateDate=null

O trecho ?Name=Joao%Email=mail@mail.com é a QueryString. Podemos identificá-la a partir do sinal de interrogação. Depois Temos os parâmetros no formato: Parâmetro=valor e separados pelo &.

Bem, então para recuperar os dados que estão sendo transportados na QueryString e converter em um objeto do tipo User é necessário utilizar o atributo [FromQuery]:

Código:

[HttpPost]
public IActionResult OnPost([FromQuery] User user)
    => throw new NotImplementedException();

Com o código acima o atributo [FromQuey] busca vincular os valores dos parâmetros da QueryString com propriedades equivalentes (mesmo nome e tipo compatível) no objeto User.

[FromRoute] - Obtendo valores de dados de rota

Aqui também recuperamos dados a partir da rota, mas disponíveis de forma diferente do [FromQuey] que foi mostrado anteriormente. Observe a URL abaixo

URL: https://seudominio.com/controller/action/mail@mail.com

Para recuperar o endereço de e-mail informado na URL podemos usar o [FromRoute]. Veja o exemplo abaixo:

[HttpPost("controller/action/{email}")]
public IActionResult Action([FromRoute] string email)
    => throw new NotImplementedException();

O [HttpPost] aqui recebe um modelo de rota que é complementado por um atributo que está sendo aguardado.

Nota 2: É possível melhorar a definição da rota. Um assunto que não será abordado neste artigo para manter o foco no na introdução ao ModelBinding.

[FromForm] - Obtendo valores de campos de formulários postados

Como o nome do parâmetro já sugere, ele é utilizado para recuperar valores de um formulário. Seguindo o memo padrão dos parâmetros anteriores, é necessário que os nomes coincidam. No código o uso dele fica assim:

[HttpPost]
public IActionResult ActionName([FromForm] User user)
    => throw new NotImplementedException();

Nota 3: Por ser característico (recuperar valores apenas de formulários postados) o [FromForm] aceita apenas métodos `[HttpPost].

# [FromBody] - Obtendo valores do corpo da solicitação Caso a solicitação tenha um formato como por exemplo `JSON` você pode utilizar o `[FromBody]` para recuperar informações da mesma. Exemplo de entrada JSON: ```json { "Name": "Joao Teste", "Email": "mail@mail.com" } ```

A declaração no código para leitura dos valores fica da seguinte forma:

[HttpPost]
public ActionResult<User> ActionName([FromBody] User user)
    => throw new NotImplementedException();

Continue lendo:

Logs no ASP.NET com Serilog

Criando uma API do zero com .NET Core 3.1 e EF Core

Populares

Priority Queue

Priority Queue ou fila prioritária é um tipo de lista inclusa no C# 10 que permite que seus itens...


Implicit Operators no C#

Implicit Operators permitem adicionar comportamentos de conversão a objetos Built In ou complexos...


ASP.NET 5 – Autenticação e Autorização com Bearer e JWT

Este artigo atualmente utiliza a versão 5.0.0-rc.1 do ASP.NET/.NET, o que significa que ainda não...


Clean Code - Guia e Exemplos

Saiba como manter seu código limpo (Clean Code) seguindo algumas práticas sugeridas pelo Robert C...


Git e GitHub - Instalação, Configuração e Primeiros Passos

Git é um sistema de controle de versões distribuídas, enquanto GitHub é uma plataforma que tem o ...


Compartilhe este artigo



Conheça o autor

Brewerton Santos

Brewerton Santos

Backend | Cloud | Community

Desenvolvedor de software e entusiasta de tecnologia da informação. Estruturando a carreira com base em tecnologias Microsoft e desenvolvimento open source.





2.380

Aulas disponíveis

232

horas de conteúdo

50.896

Alunos matriculados

35.193

Certificados emitidos





Comece de graça agora mesmo!

Temos mais de 17 cursos totalmente de graça e todos com certificado de conclusão.

Começar


Prefere algo mais Premium?

Conheça nossos planos



Premium semestral

Compra única, parcelada em até
12x no cartão de crédito


12x R$

41

,48

=R$ 497,80
  • 6 meses de acesso
  • Acesso à todo conteúdo
  • Emissão de Certificado
  • Tira Dúvidas Online
  • 52 cursos disponíveis
  • 4 carreiras disponíveis
  • 161 temas de tecnologia
  • Conteúdo novo todo mês
  • Encontros Premium

Começar agora

Política de privacidade

Premium anual

Compra única, parcelada em até
12x no cartão de crédito


12x R$

70

,65

=R$ 847,80
  • 1 ano de acesso
  • Acesso à todo conteúdo
  • Emissão de Certificado
  • Tira Dúvidas Online
  • 52 cursos disponíveis
  • 4 carreiras disponíveis
  • 161 temas de tecnologia
  • Conteúdo novo todo mês
  • Encontros Premium

Começar agora

Política de privacidade



Precisa de ajuda?

Dúvidas frequentes



  • Posso começar de graça?

    Sim! Basta criar sua conta gratuita no balta.io e começar seus estudos. Nós contamos com diversos cursos TOTALMENTE gratuitos e com certificado de conclusão.

  • Vou ter que pagar algo?

    Nós temos cursos gratuitos e pagos, porém você não precisa informar nenhum dado de pagamento para começar seus estudos gratuitamente conosco. Os cursos gratuitos são completos e com certificado de conclusão, você não paga nada por eles.

    Porém, caso queira algo mais Premium , você terá acesso à diversos benefícios que vão te ajudar ainda mais em sua carreira.

  • Por onde devo começar?

    Siga SEMPRE as nossas Carreiras , elas vão te orientar em todos os sentidos. Os cursos já estão organizados em categorias e carreiras para facilitar seu aprendizado.
    Nossa sugestão para aprendizado é começar pelo Backend e seguindo para Frontend e Mobile.

    • Backend
    • Frontend
    • Mobile

  • Os cursos ensinam tudo que preciso?

    Nenhum curso no mundo vai te ensinar tudo, desculpa ser sincero! Os cursos são uma base, eles fornecem por volta de 30% do que você precisa aprender, o resto é com você, com dedicação e MUITA prática.

  • O que eu devo estudar?

    Java ou .NET? Angular ou React? Xamarin ou Flutter? A resposta é simples e direta: "Você já sabe o básico?"

    Se você ainda não sabe BEM o básico, ou seja, os fundamentos, OOP, SOLID, Clean Code, está perdendo tempo estudando Frameworks ou até coisas mais avançadas como Docker. Foque nos seus objetivos primeiro.
    Agora se você está indeciso sobre qual Framework estudar, a boa notícia é que o mercado neste momento está bem aquecido e você tem várias oportunidade. Desta forma o que levaríamos em conta para tomar esta decisão seria:

    • Já sei o básico
    • O Framework/Tecnologia tem mercado onde eu estou (região)
    • O Framework/Tecnologia é utilizado em uma empresa onde quero atual
    • O Framework/Tecnologia resolve meu problema
    • Eu gosto de utilizar o Framework/Tecnologia

  • Estou pronto para estudar no balta.io?

    Com certeza! O primeiro passo é começar e você pode fazer isto agora mesmo!

    Começar de graça

Ainda tem dúvidas?





Assine nosso Newsletter

Receba em primeira mão todas as nossas novidades.

Cadastrar


balta.io

Sobre

  • Como funciona?
  • Seja Premium
  • Agenda
  • Blog
  • Todos os cursos

Cursos

  • Frontend
  • Backend
  • Mobile
  • Fullstack

Suporte

  • Termos de uso
  • Privacidade
  • Cancelamento
  • Central de ajuda

Redes Sociais

  • Telegram
  • Facebook
  • Instagram
  • YouTube
  • Twitch
  • LinkedIn
  • Discord