nfp*_*lee 19 asp.net-mvc dependency-injection urlhelper requestcontext
我试图将业务逻辑从控制器转移到他们自己的服务中.
public class AccountController : Controller
{
private readonly IAccountService _accountService;
public AccountController(IAccountService accountService)
{
_accountService = accountService;
}
....
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Unity注入依赖项.我想Url.GenerateUrl()在实现中使用helper方法IAccountService但是Url是针对控制器的属性.
我查看了MVC源代码,看看它是如何完成的,但它要求我RequestContext从控制器外部访问,我不知道该怎么做.
如何从控制器外部访问RequestContext?如果这不能解决我的问题,我如何解决我的设置问题?
Luk*_*keH 44
这可能不太对,因为我现在无法测试它,但我认为你可以在.NET 4+中做这样的事情:
using System.Web;
using System.Web.Mvc;
// ...
var helper = new UrlHelper(HttpContext.Current.Request.RequestContext);
string url = helper.GenerateUrl(/* ... */);
Run Code Online (Sandbox Code Playgroud)
它可能会更有意义,从控制器的情况下传递到您的IAccountService实现,而不是直接从抓住它HttpContext.Current.
Dar*_*rov 15
但是,我想在我的IAccountService实现中使用Url.GenerateUrl帮助器方法
只需将此信息作为参数传递.例:
public ActionResult Index()
{
var someUrl = Url.Action("about");
_accountService.Foo(someUrl);
}
Run Code Online (Sandbox Code Playgroud)
现在,您的服务类中不再需要UrlHelper.需要与MVC基础架构交互的所有内容都不应放在您的服务类中.它们不应该依赖于任何请求,响应,会话......控制器负责处理这些对象并将它们与您的服务类粘合在一起.
| 归档时间: |
|
| 查看次数: |
22422 次 |
| 最近记录: |