Я хочу перенаправить с действия на одном контроллере на действие на втором контроллере. Обычно я бы использовал RedirectToAction ("actionName", "controllerName", объекты);
Метод, на который я хочу перенаправить, имеет две перегрузки:
- Один для HttpVerbs.Get, который используется для прямой ссылки
- Один для HttpVerbs.Post принимает ссылочные типы, которые заполняются через привязку модели
Когда я выполняю перенаправление с помощью метода RedirectToAction, по умолчанию меня перенаправляют на метод GET, который, конечно, не соответствует моим параметрам.
Как я могу убедиться, что он перенаправляет на корректную перегрузку действия?
- EDIT -
По запросу некоторые более конкретные детали:
Действие, на которое я хочу перенаправить, заполняет viewData на основе параметров, а затем вызывает правильное представление.
public ActionResult OverView(SearchBag searchBag, IngredientBag ingredientBag) {
У него есть вторая версия для Gets, поэтому он может работать и по GET:
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult OverView(int colorId, string paintCode, string name, int formulaId) {
return OverView(new SearchBag()
{ ColorId = colorId, PaintCode = paintCode, ColorName = name, FormulaId = formulaId }
, formulaViewData.IngredientBag);
}
Тот, кого я сейчас вызываю, находится в другом контроллере. Он выполняет некоторые предварительные вычисления, извлекает необходимую информацию и затем делает то же самое, что и предыдущие действия. Я мог бы повторить код из первого действия, но я бы предпочел просто вызвать это действие.
[AcceptVerbs(HttpVerbs.Post)]
public RedirectToRouteResult ReCalculate(SearchBag searchBag, IngredientBag ingredientBag) {
Я мог бы создать временный локальный экземпляр этого следующего контроллера, но заметил, что он не имеет правильного HTTPContext и не использует методы инициализации.