我的asp.net控制器动作将FormCollection作为参数。
然后,我遍历自己的集合,在表单集合中查找值等。
我将所有代码移到了业务逻辑层,然后在操作中调用了业务逻辑层,例如:
SomeManager.Update(formCollection);
但是,将表单集合传递给我的业务逻辑层时,我感到有些疲倦。
我真的有选择吗?还有其他想法吗?
还是完美?
最佳答案
您的业务逻辑层实际上就是域模型,并且应该以与技术无关的方式来表示域模型;即不依赖任何特定技术,例如ASP.NET MVC,WPF,WCF,EF,NHibernate或其他。
最好将域模型表示为 POCO (普通的旧CLR对象),但是,正如您已经开始怀疑的那样,这排除了FormCollections和其他ASP.NET MVC特定类型。
如果能够将Update方法表示为将域对象列表作为输入的方法,那将更好。
这意味着您需要先将FormCollection转换为强类型的域对象,然后再将其传递给update方法。您将需要一个Mapper来做到这一点。您可以编写自己的自定义映射器,也可以使用AutoMapper。