服务层的复杂验证-如何



在服务层编写验证并将错误传递给控制器的最佳方法是什么?我已经找到了教程:http://www.asp.net/mvc/tutorials/older-versions/models-%28data%29/validating-with-a-service-layer-cs

在本教程中,我们将ModelState传递给自己的类ModelStateWrapper,并在服务方法中将error传递给ModelStateWrapper。你觉得这个解决方案怎么样?

您链接的解决方案不错。

基本上你想要将你的服务层与你的控制器解耦。

因此,为了做到这一点,你不能使用ModelState。因此,在本教程中,他们围绕ModelState创建一个抽象并使用它。

那么在控制器的构造函数中你只需像教程中那样传递填充的ModelStateWrapper

_service = new ProductService(new ModelStateWrapper(this.ModelState), new ProductRepository());

我认为这是一个很好的方法来做到这一点,另一种方法就是使用像Dictionary<string,string>这样的错误(而不是创建另一种类型和包装器),并在一个基础控制器的某个地方有一个实用程序方法,或者将其转换为您的ModelState

只使用字典的优点是每个人都知道它是什么,测试它是微不足道的,并且您不必一直跳回包装器类来查看如何正确使用它,抽象较少。

我认为两种解决方案都很好。

最新更新