1
resposta

Parâmetro método post sempre null

Boa noite!! Gostaria de uma ajuda para resolver um problema simples mas como estou iniciando no asp.net estou tendo dificuldades. Estou usando asp.net framework 4.6 para desenvolver uma web api Estou tendo problemas em receber parâmetros no método post. o método espera um objeto complexo que em seus campos eram data, e números inteiros vou postar aqui um código simples que tem a mesma logica.

model:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace ProelHospitalar_Api.Models
{
    public class ComprasDetalhes
    {
        int id { get; set; }

    }
}

Método post no controller:

[HttpPost]
        public IEnumerable<ComprasDetalhes> Post(ComprasDetalhes comprasDetalhes)
        {
            List<ComprasDetalhes> ComprasDetalhes = new List<ComprasDetalhes>();
            ComprasDetalhes.Add(comprasDetalhes);
            return ComprasDetalhes;
        }

o retorno tá vindo null ou um json vazio. estou usando postman para testar, seleciono RAW, content-type : application/json , no body vai o seguinte :

{
    "id": 1
}

O que falta para eu receber de fato esses valores que estou passando no postman e que no caso estou recebendo null.

retorno no postman:

[
    {}
]
1 resposta

Olá, Ismael, tudo bem com você?

Peço desculpas pela demora no retorno a sua mensagem.

O problema está na declaração das propriedades da classe ComprasDetalhes. No C#, as propriedades devem ser públicas para poderem ser acessadas e atribuídas corretamente. No seu caso, a propriedade id está com o modificador de acesso padrão, que é private, o que faz com que ela não seja acessível fora da classe. Para resolver esse problema, você pode alterar a declaração da propriedade id para que ela seja pública, adicionando o modificador public antes do tipo de dado:

public int id { get; set; }

Dessa forma, a propriedade id poderá ser acessada e atribuída corretamente quando você receber o objeto comprasDetalhes no método Post. Após fazer essa alteração, teste novamente no Postman e veja se agora você consegue receber os valores corretamente.

Espero ter ajudado.

Abraços e bons estudos!