假设我有这样一个模型:
public enum State
{
Valid = 1,
Invalid = 2
}
public class Person
{
public string Name { get; set; }
public State state { get; set; }
}
而这个控制器动作:
[HttpPost]
public object SavePerson([FromBody] Person person)
{
return person;
}
如果我发送这个JSON,一切都正常:
{
"name": "John",
"state": 1
}
但是,如果我将"state": 1
更改为无效枚举,如"state": ""
或"state": "1"
,则person
参数将为空。
换句话说,如果我发送一个部分有效的JSON,ASP.NETCore将忽略所有字段。
如何配置ASP.NETCore以至少从正文中提取有效字段?
2条答案
按热度按时间06odsfpq1#
您需要处理反序列化异常。
每次在字段中遇到问题时,此代码都会放置一个默认值,但json字符串本身必须是有效的json字符串。
对于WebAPI,您应该有一个Startup.cs文件,如下所示:
zz2j4svz2#
请尝试以下可为空的运算符: