Как я могу вернуть текущее действие в виде ASP.NET MVC? - PullRequest
285 голосов
/ 12 декабря 2008

Я хотел установить класс CSS на своей главной странице, который зависит от текущего контроллера и действия. Я могу добраться до текущего контроллера через ViewContext.Controller.GetType().Name, но как мне получить текущее действие (например, Index, Show и т. Д.)?

Ответы [ 11 ]

0 голосов
/ 08 декабря 2010

Расширение Ответ Дейла Рэгана , его пример для повторного использования, создает класс ApplicationController, который наследуется от Controller, и в свою очередь все остальные контроллеры наследуются от этого класса ApplicationController, а не Controller.

Пример:

public class MyCustomApplicationController : Controller {}

public class HomeController : MyCustomApplicationController {}

В вашем новом ApplicationController создайте свойство с именем ExecutingAction с этой подписью:

protected ActionDescriptor ExecutingAction { get; set; }

А затем в методе OnActionExecuting (из ответа Дейла Рагана) просто назначьте ActionDescriptor этому свойству, и вы сможете получить к нему доступ, когда вам это понадобится в любом из ваших контроллеров.

string currentActionName = this.ExecutingAction.ActionName;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...