У меня есть действие контроллера, которое я хотел бы вызвать другим действием контроллера.
Это действительно так? Является ли это возможным?





Controller.RedirectToAction
Это выдает перенаправление содержимого HTTP 302, включая обход браузера. Есть ли способ избавиться от поездки туда и обратно?
Действия контроллера - это общедоступные конечные точки HTTP. Если у вас есть два действия, которые должны делать одно и то же, то вам нужен либо набор методов закрытого контроллера, либо набор сервисов.
внутри вызываемого контроллера введите return View ("viewName", object); внутри вызова другого контроллера return <controller> (params ...)
Можно утверждать, что точка зрения Джастиса об услугах на самом деле является более разумным с архитектурной точки зрения решением.
Не могли бы вы подробнее рассказать о сервисном решении?
почему бы вам просто не создать экземпляр этого объекта контроллера и не вызвать метод? Это простое ООП-решение, которое не требует перенаправления ...
Действия контроллера - это конечные точки HTTP. Ожидается, что они будут конечными точками и будут называться конечными точками. Если вызвать их иначе, например, как если бы они были внутренними служебными методами, в общем случае можно ожидать, что они будут работать некорректно. В различных индивидуальных случаях это, конечно, может сработать. Но здесь я даю общий ответ, а не ответ на конкретный случай.
Как говорит @Justice, вы можете использовать RedirectToAction. Кроме того, вы можете использовать TempData для передачи данных модели (и других) между действиями контроллера.
Связанный вопрос: stackoverflow.com/questions/1296680/…