【发布时间】:2020-01-04 17:46:37
【问题描述】:
我正在尝试在 C# 中使用 .net 创建一个 Web API
虽然在我的研究中我遇到了在 dtos 中放置验证代码或数据注释属性是一个很大的禁忌,但我看到的每个教程都包含这些内容
[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 中放置数据注释或任何验证逻辑?这将如何成为“更清洁”的解决方案?
【问题讨论】:
-
您如何定义“更清洁”?如果没有注释,您将不得不自己编写验证代码。那会更“干净”吗?
-
@RobertHarvey 没错!如果它适合这种场景,为什么我不在 dtos 中使用数据注释?
-
没有什么能阻止您编写自己的验证代码。
-
这个案子会不会有点矫枉过正?
-
这是您的决定。
标签: c# .net api validation dto