Доступ к методу контроллера из ResultExecutingContext на сайте ASP.NET MVC - PullRequest
0 голосов
/ 12 августа 2010

Я пишу атрибут, в котором я хочу получить доступ к методу класса, из которого происходит контроллер, у которого есть атрибут в одном из его действий.Это довольно громко, поэтому позвольте мне объяснить:

  • Мой контроллер наследуется от класса, у которого есть метод со следующей сигнатурой: protected bool IsSearchEngine() (сам базовый класс наследуется от Controller)
  • Одно из действий на моем контроллере имеет атрибут
  • Атрибут наследуется от ActionFilterAttribute и перегружает OnResultExecuting.
  • Метод OnResultExecuting имеет параметр ResultExecutingContext.

Как я могу получить доступ к IsSearchEngine() через ResultExecutingContext?


ОБНОВЛЕНИЕ: Пока что яполучил компилятор и Intellisense, чтобы принять это:

(filterContext.Controller as MyAssembly.Controllers.BaseControllerClass).IsSearchEngine()

Это правильный способ сделать это?Я еще не проверял это.

1 Ответ

1 голос
/ 12 августа 2010

Преобразовав resultExecutingContext.Controller в BaseController, вы можете получить доступ ко всем Свойствам и Методам вашего базового контроллера, но уровень защиты вашего Метода IsSearchEngine() не позволяет получить к нему доступ. Если вы объявили свой IsSerchEngine() public, вы можете просто назвать его как ((BaseController)resultExecutingContext.Controller).IsSearchEngine()

...