Given following API
public class PagedRequest
{
[Required, Range(1, 100, ErrorMessage = "Limit must be from 1 to 100.")]
public int Top { get; set; }
[Required, Range(0, int.MaxValue, ErrorMessage = "Skip must be 0 or greater.")]
public int Skip { get; set; }
}
[Route("test")]
[HttpGet]
public ActionResult<BarResponse> GetFoos([FromQuery] PagedRequest request)
{
if (!ModelState.IsValid) return BadRequest(ModelState);
// Return 200 OK with data here
}
Works as expected:
- test?skip=0&top=10 -> returns 200
- test?skip=0&top=0 -> returns BadRequest with error messages
Doesn't work as expected
- test?top=0, returns 200 OK, expected required field validation error for Skip field.
Notes:
- Using ASP.NET Core 3.0
- This used to work with FromUri in ASP.NET Framework 4.x, then I'ld use a non-parameterless constructor, which is no longer allowed
[BindRequired]instead.