Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC: Переход к другому действию в другом контроллере / 16 сообщений из 16, страница 1 из 1
14.08.2014, 15:22
    #38720376
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: Переход к другому действию в другом контроллере
У меня такое ощущение, что я сталкивался с каким-то штатным способом вызова где-то в литературе, но сейчас никак найти не могу.

Смысл в следующем: в методе контроллера хочу вызвать другой экшн из другого контроллера (чтобы он отработал вместо текущего). Можно, конечно, просто создать экземпляр контроллера и вызвать метод, однако ж у этого экземпляра не будет правильно заполненных контекстов. Redirect - это не то, нафига мне клиента дергать для этой операции.
Есть какой-то штатный способ или мне приснилось?
...
Рейтинг: 0 / 0
14.08.2014, 15:43
    #38720410
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: Переход к другому действию в другом контроллере
Shocker.ProЕсть какой-то штатный способ или мне приснилось?

из контроллера RedirectToAction

или правильно вынести код в бизнес логику и дёргать его из разных контроллеров

ещё можно во вью сделать @Html.Action("Action", "OtherController"), OtherController должен проверить, если ChildAction, то вернуть не View, а PatialView.

ещё можно в контроллере создать экземпляр другого контроллера и вызвать его действие, но это вообще какой-то бред. как временный костыль быть может, но не нормальное поведение.

а вообще хотелось бы услышать зачем такое понадобилось?
...
Рейтинг: 0 / 0
14.08.2014, 15:52
    #38720427
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: Переход к другому действию в другом контроллере
Shocker.Pro,
не кажется что если возникла потребность в этом, то что то не того с архитектурой?
в общем прально замечено выше - вынести код как общий и дергать его с разных мест..
...
Рейтинг: 0 / 0
14.08.2014, 15:53
    #38720435
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: Переход к другому действию в другом контроллере
hVosttиз контроллера RedirectToActionточно, это ж метод, а я пытался экземпляр создать
hVosttа вообще хотелось бы услышать зачем такое понадобилось?это некоторый набор экшенов для SPA (POST-PartialView), при определенных условиях они не готовы вернуть пользователю нужные данные, поэтому перебрасываются на некий экшн (общий для нескольких контроллеров), который продемонстрирует пользователю сообщение о проблемах.
В бизнес-логику выносить не очень удобно, так как там будет отрабатываться своя модель представления.
...
Рейтинг: 0 / 0
14.08.2014, 16:36
    #38720518
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: Переход к другому действию в другом контроллере
Shocker.Pro, и в чём проблема инкапсулировать определённую логику в определённом месте? На контроллерах и моделях же свет клином не сошёлся.
...
Рейтинг: 0 / 0
14.08.2014, 16:44
    #38720536
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: Переход к другому действию в другом контроллере
Shocker.Proэто некоторый набор экшенов для SPA (POST-PartialView), при определенных условиях они не готовы вернуть пользователю нужные данные, поэтому перебрасываются на некий экшн (общий для нескольких контроллеров)Понапридумывают своё поведение поверх стандартного, а потом мучаются
...
Рейтинг: 0 / 0
14.08.2014, 16:51
    #38720547
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: Переход к другому действию в другом контроллере
Shocker.Proэто некоторый набор экшенов для SPA (POST-PartialView), при определенных условиях они не готовы вернуть пользователю нужные данные, поэтому перебрасываются на некий экшн (общий для нескольких контроллеров), который продемонстрирует пользователю сообщение о проблемах.

о, так заведи специальный ActionResult и возвращай его в таких случаях, отдельный контроллер тут не нужен.

например так:

Код: c#
1.
2.
3.
4.
5.
if(some) {

   return new SpaMessageResult(бла-бла-бла)

}



ну и

Код: c#
1.
2.
3.
4.
public class SpaMessageResult : ActionResult
{
   ... бла-бла-бла ...
}
...
Рейтинг: 0 / 0
14.08.2014, 18:14
    #38720653
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: Переход к другому действию в другом контроллере
hVosttо, так заведи специальный ActionResultЕстественно, есть несколько вариантов решения, я решил, что передача управления в другой экшн выглядит в данном случае нагляднее.skyANAповерх стандартногоа что, RedirectToAction - это нестандарт? зачем он тогда вообще придуман? ))

Ну раз вы так активно возражаете, сделаю через ActionResult
...
Рейтинг: 0 / 0
14.08.2014, 18:17
    #38720655
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: Переход к другому действию в другом контроллере
Shocker.Pro, стандарт - это HTTP POST
...
Рейтинг: 0 / 0
14.08.2014, 18:19
    #38720658
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: Переход к другому действию в другом контроллере
Shocker.Pro, что должен возвращать HTTP POST согласно стандарту?
...
Рейтинг: 0 / 0
14.08.2014, 18:26
    #38720667
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: Переход к другому действию в другом контроллере
А что такое стандарт?
...
Рейтинг: 0 / 0
14.08.2014, 18:27
    #38720668
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: Переход к другому действию в другом контроллере
Shocker.ProА что такое стандарт? О, сразу видно человека, кто в MVC из WebForms пришёл. Или вообще из десктопа.
...
Рейтинг: 0 / 0
14.08.2014, 18:30
    #38720673
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: Переход к другому действию в другом контроллере
skyANAО, сразу видно человека, кто в MVC из WebForms пришёл. Или вообще из десктопа.второе. Вебформы благополучно миновал )
...
Рейтинг: 0 / 0
14.08.2014, 18:51
    #38720698
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: Переход к другому действию в другом контроллере
hVosttиз контроллера RedirectToActionКстати, это же не то, что я спрашивал, это просто "Returns an HTTP 302 response to the browser".

Я же говорил про желание передать реквест другому действию, а не возвращать что-то клиенту.
...
Рейтинг: 0 / 0
14.08.2014, 19:58
    #38720754
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: Переход к другому действию в другом контроллере
Shocker.Pro,

httpContext.Server.TransferRequest
...
Рейтинг: 0 / 0
14.08.2014, 22:21
    #38720785
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: Переход к другому действию в другом контроллере
ИзопропилhttpContext.Server.TransferRequestмда, но это уже не MVC. Спасибо, в общем я забил на этот вариант, сделал иначе
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC: Переход к другому действию в другом контроллере / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]