背景
我试图将业务逻辑从控制器转移到自己的服务中。
调节器
public class AccountController : Controller { private readonly IAccountService _accountService; public AccountController(IAccountService accountService) { _accountService = accountService; } .... }
我正在使用Unity来注入依赖关系。我想在IAccountService的实现中使用Url.GenerateUrl()辅助方法,但Url是一个针对控制器的属性。
我看了一下MVC的源码,看看这是怎么做到的,但是它需要我从控制器外部访问RequestContext,我不知道该怎么做。
题
解决方法
However i’d like to use the Url.GenerateUrl helper methods within my implementation of IAccountService
只需将此信息作为参数传递。例:
public ActionResult Index() { var someUrl = Url.Action("about"); _accountService.Foo(someUrl); }
现在您不再需要UrlHelper在您的服务类中。需要与MVC基础架构交互的所有内容都不应放在您的服务类中。他们不应该依赖于任何请求,响应,会话,…控制器负责处理这些对象,并将它们与您的服务类粘合在一起。