Предполагая, что я правильно читаю ваш пост, и вы не пытаетесь получить доступ к именам контроллеров / действий в представлении, но INSTEAD пытается что-то с ними сделать и помещает результат в данные представления:
Вы не можете сделать это в конструкторе, потому что контекст еще не создан. Вам необходимо переопределить метод Initialize:
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
//here the routedata is available
ViewData["controller_name"] = (ControllerContext.RouteData.Values["Controller"];
}
(Обратите внимание, что вы можете передать только ControllerContext.RouteData своей функции и позволить ей выбирать нужные значения.)