我想从一个无法访问ViewContext的实用程序类创建一个路径。
这可能吗?似乎没有任何等价的ViewContext.Current
我已尝试在Routing和HttpContext的所有构造函数中钓鱼,但无法达到我想要的效果。
这就是我要找的 - 虽然这不起作用,因为RouteTable.Routes
的类型为RouteCollection
,而不是RouteData
。如此接近 - 但到目前为止: - )
RequestContext requestContext = new RequestContext(HttpContext.Current, RouteTable.Routes);
UrlHelper url = new UrlHelper(requestContext);
var urlString = url.RouteUrl(new {controller="DynamicImage", action="Button", text="Hello World"});
注意:RequestContest的类型为System.Web.Routing.RequestContext,而不是HttpContext
答案 0 :(得分:11)
试试这个:
var httpContext = new HttpContextWrapper(HttpContext.Current);
var requestContext = new RequestContext(httpContext);
var urlHelper = new UrlHelper(requestContext, new RouteData()));
希望这有帮助
<强>更新:强>
前一个不正确(我已经从我的记忆中发布了它)。试试这个(它适用于我的一个项目):
var httpContext = new HttpContextWrapper(HttpContext.Current);
var requestContext = new RequestContext(httpContext, new RouteData());
var urlHelper = new UrlHelper(requestContext);
new RouteData()
仅用于RequestContext
初始化,new UrlHelper(requestContext)
实际调用new UrlHelper(requestContext, RouteTable.Routes)