PRG в ASP.NET MVC, но с данными объекта, переданными в перенаправленное действие - PullRequest
2 голосов
/ 04 апреля 2010

Следуя шаблону Post-Redirect-Get, как описано в разных местах, но, может быть, наиболее подробно здесь Стивеном Уолтером , я хочу использовать RedirectToAction, но он не принимает параметр для отправки объекта к этому. Я могу отправлять только значения маршрута в виде объекта или как RouteValueDictionary. Поэтому в настоящее время я отправляю идентификатор и тип объекта и снова извлекаю объект из хранилища данных в действии, к которому перенаправляю (например, Результаты).

// redirect to confirm view
return RedirectToAction("ChangeSuccess", "Redirect",
    new { slug = tabgroup.Slug, contentType = tabgroup.ContentType });

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

Возможно ли это как-нибудь?

Ответы [ 3 ]

2 голосов
/ 04 апреля 2010

Вы читали это

... One of the issue with this pattern is when a validation fails or any exception occurs you have to copy the ModelState into TempData. If you are doing it manually, please stop it, you can do this automatically with Action Filters...

Его номер 13. Использовать шаблон PRG для модификации данных

1 голос
/ 05 апреля 2010

См. здесь .

Но я бы порекомендовал передать только ID. Если позже вы решите использовать отложенную загрузку, сохранение сущности в сеансе не удастся (потому что сеанс пропал после перенаправления). Я сам испытал это и мне пришлось переписать много действий.

0 голосов
/ 26 марта 2013

Вы не можете передать объект в GET URL.

Поскольку метод RedirectToAction выдает новый GET Запрос на сервер.

Однако вы можете передать параметр query string в GET URL. Поэтому, пожалуйста, попробуйте передать идентификатор в соответствии с предложением королевы.

Чтобы сохранить ваш объект между последующими запросами, я настоятельно советую использовать TempData . Однако он внутренне использует сеанс, но убивает сразу после запроса.

...