asp.net-mvc – 我可以从HttpContext获取控制器吗?
发布时间:2020-05-23 06:36:34 所属栏目:asp.Net 来源:互联网
导读:给定一个HttpContext(或HttpContextBase),有没有办法获得一个Controller的实例? HttpContext将保存对MvcHandler的引用,该引用将保存对RouteData的引用,该引用将保存对特定路由正在调用什么控制器的引用。 NB: This doesn’t give you the actual controll
|
给定一个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 – MVC4在配置文件中查看缓存持续时间?
- 在asp.net发送简讯到大约10000封电子邮件
- dependency-injection – 从ILogger访问当前的HttpContext
- CookieAuthenticationOptions,ExpireTimeSpan不起作用
- asp.net-mvc – 将整数数组传递给webapi方法
- .net – SqlBulkCopy超时
- asp.net-mvc-4 – MVC4/DotNetOpenAuth中的自定义OAuth客户
- asp.net – 如何使用webgrease?
- asp.net-mvc – Web API可空的必需属性需要DataMember属性
- asp.net – MasterPage是否知道正在显示的页面?
推荐文章
站长推荐
- ASP.NET Web Api在返回404时返回200 OK
- asp.net-mvc-3 – 如何在MVC路由中组合CatchAll和
- MvcBuildViews真实与实体框架在ASP.NET MVC 2
- asp.net-mvc – 有条件地在webgrid中显示图像 –
- asp.net-mvc-3 – ASP.NET MVC 3控制器路由 – 使
- ASP.NET MVC中的单元测试比Web窗体更好?
- ASP.NET core Web中使用appsettings.json配置文件
- asp.net – 空网站和git
- asp.net中的多线程
- asp.net-web-api – 将Application Insight与ASP
热点阅读
