asp.net-mvc – 我可以从HttpContext获取控制器吗?
发布时间:2020-12-15 19:11:41 所属栏目:asp.Net 来源:网络整理
导读:给定一个HttpContext(或HttpContextBase),有没有办法获得一个Controller的实例? 解决方法 HttpContext将保存对MvcHandler的引用,该引用将保存对RouteData的引用,该引用将保存对特定路由正在调用什么控制器的引用。 NB: This doesn’t give you the actua
给定一个HttpContext(或HttpContextBase),有没有办法获得一个Controller的实例?
解决方法
HttpContext将保存对MvcHandler的引用,该引用将保存对RouteData的引用,该引用将保存对特定路由正在调用什么控制器的引用。
GetController(HttpContextBase httpContext) { var routeData = ((MvcHandler)httpContext.Handler).RequestContext.RouteData; var routeValues = routeData.Values; var matchedRouteBase = routeData.Route; var matchedRoute = matchedRouteBase as Route; if (matchedRoute != null) { Route = matchedRoute.Url ?? string.Empty; } AssignRouteValues(httpContext,routeValues); } protected virtual VirtualPathData getVirtualPathData(HttpContextBase httpContext,RouteValueDictionary routeValues) { return RouteTable.Routes.GetVirtualPath(((MvcHandler)httpContext.Handler).RequestContext,routeValues); } private void AssignRouteValues(HttpContextBase httpContext,RouteValueDictionary routeValues) { var virtualPathData = getVirtualPathData(httpContext,routeValues); if (virtualPathData != null) { var vpdRoute = virtualPathData.Route as Route; if (vpdRoute != null) { RouteDefaults = vpdRoute.Defaults; RouteConstraints = vpdRoute.Constraints; RouteDataTokens = virtualPathData.DataTokens; RouteValues = routeValues; } } } 这段代码可能看起来很熟悉,这是因为我已经适应了Phil Haack的route debugger源代码。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 什么是MVC 5的会员提供商?
- asp.net-mvc-4 – 如何在jQUERY中传递Id
- Jquery easyui Tree的简单使用
- asp.net – 从另一个域配置IIS身份验证
- asp.net – HTTP 500内部错误 – IIS网站
- asp.net – 如何在站点地图的单独窗口中打开文档
- asp.net-mvc-4 – SignalR维护浏览器刷新时的连接ID
- asp.net-mvc – 属性路由不工作在区域
- asp.net-mvc – SquishIt vs. MVC 4.0 Bundler
- asp.net – 将Salesforce.com与.NET Server C集成的最佳安全
推荐文章
站长推荐
- asp.net-mvc – MVC 4 – Ajax – 将一个局部视图
- ASP.Net Core 2.0和日志记录
- asp.net-mvc – ASP.Net Mvc固定长度字符串数据注
- asp.net mvc和css:选择时突出显示菜单选项卡
- entity-framework – Entityframework Mapping问
- Asp.Net Core 2.0 多角色权限认证
- ASP .NET MVC 4:WebSecurity.CreateUserAndAcco
- ASP.NET MVC中的经典ASP(C#)
- asp.net – 我如何找出哪些服务器主机LDAP在我的
- asp.net – Web Farm上的Forms Authentication 4
热点阅读