CamelCaseNamingStrategy不适用于复杂类型,[FromBody]不起作用



使用与实际代码类似的示例,首先设置上下文。我的模型如下:

public sealed class MyModel
{
public string Name {get; set;}
public MyIdentities Id {get; set;}
}

api如下:

[ODataRoute(SomeRoute)]
public async Task<IActionResult> PatchAsync([FromBody] MyModel mod)
{
// Some Code
}

在startup.cs中,我有CamelCaseNamingStrategy定义如下:

services.AddControllers().AddNewtonsoftJson(options =>
{
var contractResolver = new CamelCasePropertyNamesContractResolver()
{
NamingStrategy = new CamelCaseNamingStrategy(),
};
options.SerializerSettings.ContractResolver = contractResolver;
options.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
});

现在,当我试图使用下面的请求体-对象";mod";为null,即使ModelState有效。

{
"Id":{}
}

对象";mod";不为空,具有以下请求正文:

{
"id":{}
}

基本上[FromBody]不是在第一种情况下解析正文。有人能解释一下原因吗?

我正在使用

options.SerializerSettings.ContractResolver =
new CamelCasePropertyNamesContractResolver();
options.SerializerSettings.Formatting = Formatting.Indented;

最新更新