asp.net-mvc – 如何在ASP.NET MVC中构建没有ViewContext的路由?

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 如何在ASP.NET MVC中构建没有ViewContext的路由?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想从一个无法访问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

解决方法

试试这个:
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初始化,新的UrlHelper(requestContext)实际调用新的UrlHelper(requestContext,RouteTable.Routes)

猜你在找的asp.Net相关文章