Перемещение действий JsonResult из контроллера в отдельный вспомогательный класс

#asp.net-mvc

#asp.net-mvc

Вопрос:

Изначально я создал пару действий в своем классе AccountController, которые я хотел бы перенести в отдельный класс. Я создал новый файл класса в папке /Helpers.

Этот класс должен иметь URL, доступный из jQuery Ajax на стороне клиента. Методы класса также возвращают JsonResult в том виде, в каком он закодирован сейчас. По обеим этим причинам правильно ли, что этот вспомогательный класс должен иметь базовый класс Controller и что его, вероятно, следует поместить в папку /Controllers для обеспечения согласованности?

Если этот вспомогательный класс должен быть основан на классе контроллера, чтобы быть доступным по URL, то для этого также требуется страница просмотра?

Комментарии:

1. Что ж, если он должен быть доступен для входящих запросов, то он должен быть контроллером и, как таковой, должен находиться в каталоге ‘Controllers’.

Ответ №1:

правильно ли, что этот вспомогательный класс должен иметь базовый класс Controller

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

вероятно, его следует поместить в папку /Controllers для обеспечения согласованности?

Да, это имеет смысл.

Если этот вспомогательный класс должен быть основан на классе контроллера, чтобы быть доступным по URL, то для этого также требуется страница просмотра?

Не совсем, поскольку вы упомянули, что методы возвращаются JsonResult , в этом случае нет необходимости иметь соответствующее представление. Только если вы хотите вернуть вывод HTML, вам нужно, чтобы представление возвращалось как ActionResult .