【发布时间】:2021-08-05 21:17:43
【问题描述】:
使用 .Net Core 5 和 Microsoft.AspNetCore.OData 8.0.1 我创建了一个 OData Web API 端点。
当我的控制器基于 ODataController 并尝试将新记录发布到简单的发布端点时,我发布的对象是空的。如果我将控制器更改为基于 ApiController,则帖子可以正常工作,并且我会得到预期的数据。
public class NoteTypeController : ODataController (or ApiController)
{
[EnableQuery(AllowedQueryOptions=AllowedQueryOptions.All)]
[HttpPost]
public async Task<ActionResult<NoteType>> Post(NoteType noteType)
{
return Created(noteType); //breakpoint here shows noteType empty
}
}
为什么会这样?
***** 编辑 它似乎与 json 的格式有关。如果一个值没有被引号包围,或者一个值为空/null,那么它将出错。即因为下面的 json 中没有引用“true”,所以它不起作用。
{
"@odata.type":"MyModel.NoteType",
"createdBy": "string",
"modifiedBy": "string",
"isActive": true,
"description": "My Description"
}
【问题讨论】:
-
根据您的编辑,这似乎得到了有效的回答——即,
ODataController对如何反序列化请求更加挑剔,而ApiController提供了更大的灵活性。如果是这样,我想知道您的编辑是否会更好地作为答案?
标签: c# odata asp.net-core-webapi