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

时间:2015-02-16 20:42:08

标签: asp.net-mvc asp.net-mvc-routing

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

从控制器调用此类。

在控制器中,我通常会生成路线的URL,如:

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

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

我试过了:

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

这导致

  

' System.ArgumentNullException'值不能为空。参数名称:routeCollection

1 个答案:

答案 0 :(得分:18)

以下是唯一的方法:

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

但是,这需要注意:

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