我的asp.net控制器动作将FormCollection作为参数。

然后,我遍历自己的集合,在表单集合中查找值等。

我将所有代码移到了业务逻辑层,然后在操作中调用了业务逻辑层,例如:

SomeManager.Update(formCollection);

但是,将表单集合传递给我的业务逻辑层时,我感到有些疲倦。

我真的有选择吗?还有其他想法吗?

还是完美?

最佳答案

您的业​​务逻辑层实际上就是域模型,并且应该以与技术无关的方式来表示域模型;即不依赖任何特定技术,例如ASP.NET MVC,WPF,WCF,EF,NHibernate或其他。

最好将域模型表示为 POCO (普通的旧CLR对象),但是,正如您已经开始怀疑的那样,这排除了FormCollections和其他ASP.NET MVC特定类型。

如果能够将Update方法表示为将域对象列表作为输入的方法,那将更好。

这意味着您需要先将FormCollection转换为强类型的域对象,然后再将其传递给update方法。您将需要一个Mapper来做到这一点。您可以编写自己的自定义映射器,也可以使用AutoMapper

10-06 14:59