在控制器之外生成路由,类似于 Url.RouteUrl()

Generating a route outside of a controller, similar to Url.RouteUrl()

我在 ASP.NET MVC 5 应用程序中有一个服务 class,它应该生成完全合格的路由 URL。

正在从控制器调用此 class。

在控制器中,我通常会生成 URL 到路由,例如:

 string myUrl = Url.RouteUrl("ViewCust", new{custId=customerId},Request.Url.Scheme)

如何在不是控制器的 class 中生成路由 URL?

我试过:

string myUrl = System.Web.Mvc.UrlHelper()
            .RouteUrl(
            routeName,
            routeValues,
            HttpContext.Current.Request.Url.Scheme);

这导致

'System.ArgumentNullException' Value cannot be null. Parameter name: routeCollection

以下是唯一的方法:

var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);

但是,有一些警告:

  1. 存在对 System.Web
  2. 的严重依赖
  3. 必须在 MVC 项目的上下文中完成(此代码所在的实际 class 可以存在于 MVC 项目之外,但只能从 MVC 项目中调用)。