使用与实际代码类似的示例,首先设置上下文。我的模型如下:
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;