Подтвердить что ты не робот

Получить имя контроллера и имя_задачи и заполнить ViewData на главной странице?

У меня есть SuperController, который будет унаследован от всех контроллеров. В конструкторе я пытаюсь заполнить ViewData с помощью ControllerName и ActionName.

Я не буду передавать имя ControllerName и ActionName как ViewData. У меня есть метод, который требует имя ControllerName и ActionName, и мне нужно передать возвращаемое значение метода как ViewData.

Как я могу это сделать?

4b9b3361

Ответ 2

Попробуйте следующее:

RouteData.Values.First().Value.ToString()

Ответ 3

Предполагая, что я правильно читаю ваше сообщение, и вы не пытаетесь получить доступ к именам контроллеров/действий в представлении, но INSTEAD пытается что-то с ними сделать и поместить результат в viewdata:

Вы не можете сделать это в конструкторе, потому что контекст еще не создан. Вам необходимо переопределить метод 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 в свою функцию и позволить ему выбирать нужные значения.)

Ответ 4

Мне нужно было получить эти много из представлений, и я ударил его с немного другого угла - я написал несколько методов расширения для HtmlHelper, чтобы дать текущее имя_контроллера и имя_пользователя. Немного легче справиться, так как вам не нужно беспокоиться о погружении в сумку ViewData [] или впрыскивать вещи в соответствующих местах.