C# 控制器无法识别传递的属性
我正在使用ASP.NET核心创建一个web api,但遇到了一个问题。我有一个post请求,我想用JSON格式向它传递一个市政对象。问题是我有属性为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
[必需]
的属性名。我通过使用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,“税务”:[]}谢谢!!你是个英雄!除息的