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

p.c*_*ell 7 asp.net-mvc asp.net-mvc-routing

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

从控制器调用此类.

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

 string myUrl = Url.RouteUrl("ViewCust", new{custId=customerId},Request.Url.Scheme)
Run Code Online (Sandbox Code Playgroud)

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

我试过了:

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

这导致了

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

Chr*_*att 20

以下是唯一的方法:

var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
Run Code Online (Sandbox Code Playgroud)

但是,这需要注意:

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