MVC3 IsValid和业务逻辑层

时间:2011-05-03 15:03:54

标签: validation asp.net-mvc-3 business-logic

我在我的应用程序中使用MVC3,我对验证有疑问。我有一个与我的Web层分开的业务逻辑层,我将在其中创建一个类似CreateUser的函数,它为应用程序创建一个新用户。我希望这个功能可以在两个地方访问:1)控制器中的某个地方使用它,2)在“设置数据”程序中将数据插入系统。

我想利用像ModelState.IsValid之类的东西来检查所有基本验证,但这对我的设置数据模式(或任何其他不通过MVC的模式)都没有帮助。有什么方法我仍然可以利用这段代码,但是在没有BusinessLogic层依赖MVC的情况下,在我的BusinessLogic层而不是控制器中包含所有验证?

感谢。

2 个答案:

答案 0 :(得分:1)

看起来像this article about Service Layers has what I need。其他建议仍然受到欢迎。感谢。

答案 1 :(得分:1)

请注意,有关服务层的文章仍然意味着您需要依赖MVC程序集。在最近与我自己进行了一些摔跤后,我现在认为尽可能保持分离是一个很好的设计。在我的模型程序集中,我有一个services文件夹,其中来自Create()例程,我验证并抛出自定义异常。

服务层不关心消耗这些异常的人或方式。在MVC应用程序中,将它们映射到模型状态错误集合或其他任何内容。您的设计更加可靠,因为您的模型程序集不依赖于某些验证运行程序正确使用MVC验证属性,集合等。

我也注意到这篇文章提到了一个存储库。我知道现在风靡一时但是如果你已经在使用像Entity Framework这样的ORM,那么存储库实际上只是DAOReposity is the new Singleton