我正在尝试从我的 Angular 前端向 .net Core 3.1 后端发出后请求,但在控制器方法中,参数对象默认只获取 0 和空值;
let response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(obj)
});
[ApiController]
[Route("[controller]")]
[ApiExplorerSettings(IgnoreApi = true)]
public class RequestController : ControllerBase
{
[HttpPost]
public async Task<IAResponseViewModel> PostAnswer([FromBody] IAResponseViewModel something)
{
var temp = something.ToString();
if (!ModelState.IsValid)
{
Console.WriteLine();
}
return something;
}
}
public class IAResponseViewModel
{
public string AdministrationId { get; }
public int RoundUsesItemId { get; }
public int ResponseOptionId { get; }
}
我看到正在提交的 JSON 对象
{AdministrationId: "12345678-00e8-4edb-898b-03ee7ff517bf", RoundUsesItemId: 527, ResponseOptionId: 41}
检查控制器方法时,IAResponseViewModel 的 3 个值为空或 0 当我将参数更改为对象时,我得到的值为
ValueKind = Object : "{"AdministrationId":"12345678-00e8-4edb-898b-03ee7ff517bf","RoundUsesItemId":523,"ResponseOptionId":35}"
我尝试过使用和不使用 [FromBody] 属性,更改控制器方法参数和前端参数属性的大小写,将视图模型属性复制粘贴到提交的对象键上,将发布的对象包装在"某物"对象中。 属性显示为 true。 我有红色的其他答案,例如 Asp.net 核心MVC后参数总是空和 https://github.com/dotnet/aspnetcore/issues/2202 和其他人,但找不到有帮助的答案。
为什么模型绑定不起作用,以及如何使用 json 数据填充我正在使用的视图模型类?
来自对我原始问题的评论:
可能是因为IAResponseViewModel中的属性是"仅获取"吗?
事实上,这就是问题所在。提供属性(默认(设置方法解决了问题。