C# 控制器无法识别传递的属性

C# 控制器无法识别传递的属性,c#,asp.net-mvc,asp.net-core,C#,Asp.net Mvc,Asp.net Core,我正在使用ASP.NET核心创建一个web api,但遇到了一个问题。我有一个post请求,我想用JSON格式向它传递一个市政对象。问题是我有属性为[必需]的属性名。我通过使用Postman和这个JSON有效负载{“Name”:“London”}来调用端点,在验证模型时,它会说“Name字段是必需的”,尽管它是明确提供的 我尝试过使用[FromBody]属性,但问题是它不会给我验证错误,只会说“输入无效”,并给出一个空对象,因此不使用该属性会产生更好的错误 Github: BaseModel.c

我正在使用ASP.NET核心创建一个web api,但遇到了一个问题。我有一个post请求,我想用JSON格式向它传递一个市政对象。问题是我有属性为
[必需]
的属性名。我通过使用Postman和这个JSON有效负载
{“Name”:“London”}
来调用端点,在验证模型时,它会说“Name字段是必需的”,尽管它是明确提供的

我尝试过使用
[FromBody]
属性,但问题是它不会给我验证错误,只会说“输入无效”,并给出一个空对象,因此不使用该属性会产生更好的错误

Github:

BaseModel.cs

public class BaseModel
{
    public int Id { get; set; }
}
public class Municipality : BaseModel
{
    [Required]
    public string Name { get; set; }
    public ICollection<Tax> Taxes { get; set; }
}
    [EnableQuery]
    public async Task<IActionResult> Post(Municipality baseObject)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        await Context.Set<Municipality>().AddAsync(baseObject);
        await Context.SaveChangesAsync();
        return Created(baseObject);
    }
市政当局.cs

public class BaseModel
{
    public int Id { get; set; }
}
public class Municipality : BaseModel
{
    [Required]
    public string Name { get; set; }
    public ICollection<Tax> Taxes { get; set; }
}
    [EnableQuery]
    public async Task<IActionResult> Post(Municipality baseObject)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        await Context.Set<Municipality>().AddAsync(baseObject);
        await Context.SaveChangesAsync();
        return Created(baseObject);
    }
公共类市政:基本模型
{
[必需]
公共字符串名称{get;set;}
公共ICollection Taxes{get;set;}
}
市政管制员.cs

public class BaseModel
{
    public int Id { get; set; }
}
public class Municipality : BaseModel
{
    [Required]
    public string Name { get; set; }
    public ICollection<Tax> Taxes { get; set; }
}
    [EnableQuery]
    public async Task<IActionResult> Post(Municipality baseObject)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        await Context.Set<Municipality>().AddAsync(baseObject);
        await Context.SaveChangesAsync();
        return Created(baseObject);
    }
[启用查询]
公共异步任务Post(市政基本对象)
{
如果(!ModelState.IsValid)
{
返回请求(ModelState);
}
wait Context.Set().AddAsync(baseObject);
wait Context.saveChangesSync();
创建的返回(baseObject);
}
POST请求截图-

在下面为您当前的

  • 使用
    FromBody添加
    public async Task Post(市政基本对象)

    [EnableQuery]
    [HttpPost]
    public async Task<IActionResult> Post([FromBody]Municipality baseObject)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }
    
        await Context.Set<Municipality>().AddAsync(baseObject);
        await Context.SaveChangesAsync();
        return Created(baseObject);
    }
    

  • 您的
    baseObject
    是否在
    Post(市政基本对象)
    中填充了值?由邮递员提供?我的意思是你得到了
    baseObject的值
    ?你是如何将数据发送到post操作的?请用json提供你的邮差电话,你正在传递这个电话。我已经为我的问题添加了一个屏幕截图链接。值未填入
    baseObject
    -它们为空。我不知道
    EnableQuery
    属性的实际用法,但请尝试一次完整对象<代码>{“姓名”:“伦敦”,“身份证”:1,“税务”:[]}
    谢谢!!你是个英雄!除息的