Let’s say I have this model:
public enum State
{
Valid = 1,
Invalid = 2
}
public class Person
{
public string Name { get; set; }
public State state { get; set; }
}
And this controller action:
[HttpPost]
public object SavePerson([FromBody] Person person)
{
return person;
}
If I send this JSON, everything works just fine:
{
"name": "John",
"state": 1
}
However, if I change the "state": 1
to an invalid enumeration like "state": ""
or "state": "1"
, then the person
parameter would be null.
In other words, if I send a JSON that is partially valid, ASP.NET Core ignores all fields.
How can I configure ASP.NET Core to at least extract the valid fields from the body?
2
Answers
You need to handle deserialization exception.
This code will put a default value each time it will encounter a problem in a field but the json string itself must be a valid json string.
For WebAPI you should have a Startup.cs file looks like this:
Try this nullable operator: