想将所有业务逻辑移到BLL层,但需要传入formcollection,那是干净的吗?

mrb*_*lah 3 asp.net-mvc loose-coupling

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

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

我将所有代码移动到业务逻辑层,只需在我的操作中调用业务逻辑层,如:

SomeManager.Update(formCollection);
Run Code Online (Sandbox Code Playgroud)

但是我感觉有点厌倦了将formcollection传递给我的业务逻辑层.

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

还是完全没问题?

Mar*_*ann 8

您的业​​务逻辑层实际上是您的域模型,域模型应该以技术无关的方式表达; 即不依赖于任何特定技术,如ASP.NET MVC,WPF,WCF,EF,NHibernate等等.

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

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

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