我想从无法访问ViewContext的实用程序类创建路由。

这可能吗?似乎没有ViewContext.Current的任何等效项

我已经尝试过在路由和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

最佳答案

试试这个:

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)

关于asp.net-mvc - 如何在 ASP.NET MVC 中构建没有 ViewContext 的路由?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/724153/

10-13 06:12