2008-11-24 3 views
7

Я хочу перенаправить действие от одного контроллера на действие во втором контроллере. Обычно я использовал RedirectToAction («actionName», «имя_контроллера», объекты); Метод, который я хочу, чтобы перенаправить на две перегруженные:Перенаправление на действие в другом контроллере

  • One для HttpVerbs.Get, который используется для прямого связывания
  • One для HttpVerbs.Post принимая ссылочные типы, которые подставляются через modelbinding

Когда я перенаправляю метод 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 и не попал методы инициализации.

+0

Вы можете поместить несколько глаголов в одно действие, подобное этому [AcceptVerbs (HttpVerbs.Post | HttpVerbs.Get)] – 2008-11-24 11:25:10

+0

Так вы пытаетесь перенаправитьToAction из действия ReCalculate в действие OverView? – 2008-11-24 11:26:47

ответ

3

Вы не можете использовать RedirectToAction (или что-то еще), чтобы вызвать перенаправление браузера с помощью HTTP POST. Вы можете взломать его с помощью JavaScript, но это было бы уродливо.

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

Я предполагаю, что вы хотите сохранить некоторые данные в TempData, вызвать RedirectToAction, загрузить из TempData в целевой контроллер/действие и процесс.

Для получения дополнительной информации о TempData см. Эти вопросы; http://www.google.com/search?q=tempdata+site%3Astackoverflow.com

2

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

Смежные вопросы