2011-04-19 66 views
1

从动作方法将上下文传递给自定义业务/辅助类的最佳方式是什么?我创建的帮助程序/业务类将需要诸如当前登录的用户,UrlHelper类的实例(以生成URL)以及任何其他与ASP.NET MVC基础结构相关的数据等信息。ASP.NET MVC:将上下文传递给自定义类

我想通过一个控制器的实例。这是可取的吗?最佳做法是什么?

回答

5

我创建的帮助器/业务类将需要诸如当前登录的用户之类的信息。

不太可能。恕我直言,这将足以用户名=> User.Identity.Name,它可以作为字符串参数传递到此业务层。

一个UrlHelper类的实例(生成URL)

可能性不大。生成网址不是业务层的责任。直接从拥有Url属性的控制器传递网址,以便您可以随意生成网址(再次作为字符串参数)。

结论:将您的业务逻辑从您的基础架构中分离出来。基本上,如果你打电话给某个业务逻辑,URL助手的唯一概念很难说。一旦你跨越了网络层的边界,就没有更多的网址助手。

+0

我喜欢你的答案。如果我的类是一个辅助类,它主要包含与包含业务逻辑的Web服务通信的应用程序/ UI逻辑。那么,辅助类是否可以与ASP.NET MVC的基础结构结合起来呢? – burnt1ce 2011-04-20 14:31:50

+0

@ burnt1ce,是的,如果它是一个辅助类(HtmlHelper,UrlHelper,...),那么与ASP.NET MVC基础结构耦合并将所需信息传递给业务层是完全正确的。 – 2011-04-20 14:35:37

+0

感谢您的快速回复。我可以对视图模型做同样的事吗?对于我的一些视图模型,我想将控制器上下文和业务实体传递给视图模型的构造函数。 – burnt1ce 2011-04-20 14:47:24

1

减少业务助手层中已有的耦合传递值类型或参数/ dto类。

不要传递任何与Web/UI层有关的东西。

相关问题