在控制器之外生成路由,类似于 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);
但是,有一些警告:
- 存在对
System.Web
的严重依赖
- 必须在 MVC 项目的上下文中完成(此代码所在的实际 class 可以存在于 MVC 项目之外,但只能从 MVC 项目中调用)。
我在 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);
但是,有一些警告:
- 存在对
System.Web
的严重依赖
- 必须在 MVC 项目的上下文中完成(此代码所在的实际 class 可以存在于 MVC 项目之外,但只能从 MVC 项目中调用)。