我能否从HttpContext中获取当前正在执行的控制器

本文关键字:执行 控制器 获取 HttpContext | 更新日期: 2023-09-27 18:10:34

我正在使用一些第三方类。我想在其中获取控制器的routevalues。不幸的是,它没有给我当前正在执行的控制器。我能从HttpContext中得到它吗?

类看起来像:

public class ServiceStationVisibilityProvider
        : ISiteMapNodeVisibilityProvider 
    {
        public bool IsVisible(SiteMapNode node, HttpContext context, IDictionary<string, object> sourceMetadata)
        {
            node.Title = DateTime.Now.ToString(); //need to access routevalues and set title
            return true;
        }

现在我可以手动检查请求。RawUrl,解析和做一些奇怪的事情。但是,我不希望编写那种类型的代码,以免在以后应用程序增长时陷入麻烦。}

我能否从HttpContext中获取当前正在执行的控制器

可以在此对象中搜索"controller""action"的值

HttpContext.Request.RequestContext.RouteData.Values

不确定在什么上下文中执行,但您可以从RequestContext:

获得它
RequestContext.RouteData.Values["controller"].ToString()