我正在尝试使用C#中的.net创建Web API
尽管我在研究中遇到的问题是,在dto中有很大的禁止放置验证代码或数据注释属性,但我看到的每个教程在这行中都有一些东西
[HttpPost]
public IActionResult Post(SomeDto someDto)
{
if (ModelState.IsValid){
//DoStuff();
}
}
如果我没记错,则ModelState.IsValid检查参数是否满足SomeDto dto的验证要求。例如:
public class SomeDto
{
[Range(0, 10, ErrorMessage = "Price cannot be more that 10")] //this
public decimal Price { get; set; }
}
因此,我是否应该在DTO内放置数据注释或任何验证逻辑?这将是“更清洁”的解决方案吗?
如果您需要实施更复杂的逻辑进行验证,最好使用FluentValidator
之类的工具。在这种情况下,您可以分离类并定义自定义验证逻辑,并将验证属性用于操作或类似这样的操作: