Определение истинного списка действий на контроллере является сложной задачей. Единственный правильный ответ: «зависит»! Список, который дал Саулюс, в значительной степени правильный - если вы используете ControllerActionInvoker по умолчанию - который, конечно, использует большинство людей.
Если вы хотите избежать дублирования логики, я бы порекомендовал использовать сам ControllerActionInvoker, чтобы получить список действий, а затем проверить содержимое списка, который он возвращает.
Вам нужно написать класс, производный от ControllerActionInvoker, чтобы можно было вызывать метод GetControllerDescriptor (). Возвращаемое значение этого метода - ControllerDescriptor, который является абстрактным дескриптором того, что имеет контроллер. Затем вы можете вызвать GetCanonicalActions (), которая возвращает список ActionDescriptors. Каждый из этих элементов представляет собой типичный метод действий.
Чтобы все это подключить, вам нужно:
- Создайте свой контроллер
- Установите его свойство ActionInvoker в качестве экземпляра вашего пользовательского инициатора
- Создайте экземпляр ControllerContext, для которого его экземпляр Controller установлен на ваш контроллер
- Вызвать новый открытый метод на вашем вызывающем, который в свою очередь вызывает GetControllerDescriptor ()
Затем проверьте результаты, и все готово!
Конечно, я не пробовал ничего из этого, но теоретически все это работает:)