“用户可能做X是用户拥有对象Y”:在模型验证中实现逻辑还是在控制器逻辑中?

StackOverflow https://stackoverflow.com/questions/9333916

  •  27-10-2019
  •  | 
  •  

例如,考虑逻辑“用户只能编辑或删除该用户创作的评论”。

“我的控制器操作”将重复检查当前登录用户是否会影响注释的逻辑。例子 通用标签

当然,我可以将这种逻辑捆绑在一个方法中,这样我就不会复制/粘贴该代码段。但是,将代码从控制器中取出并放入ValidationAttribute中可以使我的Action变得更小并且更容易编写测试。例子 通用标签

模型验证是该工作的正确工具吗?我喜欢从控制器Action中消除这种担忧;但是在这种情况下,可能会使事情进一步复杂化。当您认为此操作是RESTful API的一部分并且需要根据ModelState中的验证错误返回不同的HTTP状态代码时,尤其如此。

在这种情况下是否有“最佳实践”?

有帮助吗?

解决方案

我个人认为它看起来不错,但是您会被注释所吸引。我认为这不属于您的表示层,应该由您的服务层处理。

我会在以下内容上提出一些建议: 通用标签

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top