URL-маршрутизация MVC3 - визуализация представления с предыдущим URL-адресом (например, обратная передача) - PullRequest
0 голосов
/ 23 декабря 2011

У меня есть контроллер, у которого есть метод Create для обработки данных HttpPost из формы.Страница, содержащая форму, доступна по URL-адресу

CallOutcome/Call?orderId=114565

Когда форма отправлена, я делаю вставку базы данных и создаю объект модели представления, который возвращается в представление для повторного отображения формы.Это работает нормально, однако теперь URL-адрес изменился на имя моего метода действия:

CallOutcome/Create

Как мне сделать так, чтобы он отображал исходный URL-адрес?Желаемый результат был бы таким, как если бы он работал подобно обратной передаче, то есть повторно отображал ту же страницу и URL.

Это мой (упрощенный) метод действия, который возвращает объект CallDetailsViewModel представлению с именем «Call»:1009 *

[HttpPost]
 public ActionResult Create(GGAP_CallOutcome callOutcome)
{
    if (ModelState.IsValid)
    {
        callRepository.SaveCallOutcome(callOutcome);
        return View("Call", new CallDetailsViewModel{
            CustomerOrder = new CustomerOrder{},
            CallOutcome = new CallOutcome{},
            Task = new Task{}
         });
     }
 }

Ответы [ 2 ]

0 голосов
/ 28 декабря 2011

не так много ответов! может быть, слишком близко к рождеству?

Для записи я использовал RedirectToRoute:

return RedirectToRoute(new
{
   controller = "CallOutcome",
   action = "Call",
   orderId = Convert.ToInt32(callOutcome.OrderId)
});

Что делает именно то, что я хотел.

0 голосов
/ 23 декабря 2011

Думаю, вам следует взглянуть на шаблон Post-Redirect-Get (шаблон PRG).

Подробности реализации можно найти в этом вопросе .

ИМХО интересный момент - как использовать TempData для управления недействительным ModelState.

...