服务层中的复杂验证 - 如何?

时间:2014-05-24 14:13:05

标签: asp.net-mvc

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

在本教程中,我们将ModelState传递给自己的类ModelStateWrapper,在service方法中,我们将错误传递给ModelStateWrapper。您对此解决方案有何看法?

1 个答案:

答案 0 :(得分:1)

你联系的解决方案很不错。

基本上,您要将服务层与控制器分离。

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

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

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

我认为这是一种很好的方法,另一种方法就是使用像Dictionary<string,string>这样的错误(而不是创建另一种类型和包装器),并在某处使用实用方法基本控制器或将其转换为ModelState的东西。

只使用字典的好处是每个人都知道它是什么,测试它是微不足道的,你不必继续跳回你的包装类来看看如何正确使用它,减少抽象等。

我认为任何解决方案都没问题。

相关问题