我想从一个无法访问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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。