Как я могу получить действие контроллера (метод) и тип контроллера, который будет вызываться, учитывая System.Web.Routing.RouteData
?
Мой сценарий таков - я хочу иметь возможность выполнять определенные действия (илинет) в методе OnActionExecuting
для действия.
Однако мне часто захочется узнать не текущее действие, а вызываемое «корневое» действие;под этим я подразумеваю, что у меня может быть представление под названием «Логин», которое является моей страницей входа.Это представление может включать в себя другое частичное представление "LeftNav".Когда OnActionExecuting
вызывается для LeftNav, я хочу определить, действительно ли он вызывается для «корневого» действия входа в систему.
Я понимаю, что, позвонив RouteTable.Routes.GetRouteData(actionExecutingContext.HttpContext)
, я могу получитьмаршрут для «корневого» запроса, но как превратить это в метод и тип информации?
Единственное решение, которое у меня есть, это что-то вроде:
var routeData = RouteTable.Routes.GetRouteData(actionExecutingContext.HttpContext)
var routeController = (string)routeData.Values["controller"];
var routeAction = (string)routeData.Values["action"];
Проблема с этимявляется то, что "routeController" является именем контроллера с удаленным суффиксом "Controller" и не является полностью квалифицированным;то есть это «Логин», а не «MyCode.Website.LoginController».
Я бы предпочел получить фактические Type
и MethodInfo
, если это возможно, или хотя бы полное имя типа.1020 *
Есть мысли или альтернативные подходы?
[ РЕДАКТИРОВАТЬ - это ASP.Net MVC 1.0]