Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP .NET CORE simple parameter validation

Is it possible to do some validation using attributes on simple parameters, like:

[HttpGet("test/{type}")]
public ActionResult  GetSomeData([Range(0,2)]byte type)
{
  if (!ModelState.IsValid)
  {
    // isValid is always TRUE
  }
  ...
}

When you call /controller/test/4, IsValid is always TRUE.

Is there a cleaner way to do that?

like image 940
Kane Avatar asked Aug 20 '18 08:08

Kane


1 Answers

As of version 2.1, this functionality is now available out of the box; data annotations on action parameters will also be respected when calling ModelState.IsValid in the same way that they are on models.

https://docs.microsoft.com/en-us/aspnet/core/mvc/models/validation?view=aspnetcore-2.1#top-level-node-validation

If you annotate your class with the ApiController attribute, validation will also be performed automatically, and a 400 Bad Request will be returned with details of the invalid data without having to call ModelState.IsValid yourself.

https://docs.microsoft.com/en-us/aspnet/core/web-api/index?view=aspnetcore-2.1#automatic-http-400-responses

like image 79
adrian Avatar answered Oct 05 '22 23:10

adrian