user11208424
user11208424

Reputation: 51

RequestModel is null when enum is wrong

If you have this enum :

public enum MyEnum
{
    Value1,
    Value2
}

And this Request :

{
   "myEnum" : "WrongValue",
   "name" : "MyName"
}

In the controller :

public async Task<ActionResult> RequestAsync(
        [FromBody] MyRequest myRequest)
    {
    }

myRequest is null.

But if you use ;

{
   "myEnum" : "Value1",
   "name" : "MyName"
}

It is not null.

Upvotes: 2

Views: 236

Answers (1)

Maulik
Maulik

Reputation: 795

Yes correct when invalid Enum value passed to model, you will receive entire request model as null

but we can leverage Microsoft.AspNetCore.Mvc.ModelState to check whether request model is valid or not

public async Task<ActionResult> RequestAsync(MyRequest myRequest)
{
     if (!ModelState.IsValid)
     {
         return BadRequest(ModelState);
     }

     // api implementation ...
}

this will return error from ModelState for invalid enum property in response as below

{
  "myRequest": [
    "The myRequest field is required."
  ],
  "$.Protocol": [
    "The JSON value could not be converted to Namespace.MyEnum. Path: $.Protocol | LineNumber: X | BytePositionInLine: XX."
  ]
}

Upvotes: 0

Related Questions