ASP.Net MVC - отправка объекта из контроллера для просмотра в контроллер - PullRequest
1 голос
/ 20 июля 2010

Я только начинаю с ASP.Net MVC 2 и могу что-то делать не так. У меня есть контроллер, который создает некоторые объекты и передает их в представление с помощью ViewData. В представлении я отображаю данные и т. Д., А затем хочу отправить те же данные (плюс другие пользовательские данные) обратно на тот же контроллер. Есть ли простой способ сделать это?

При необходимости я предоставлю более подробное описание проблемы.

Спасибо и хорошего дня:)

РЕДАКТИРОВАТЬ: Я читал больше о ViewModels, опасаясь, что я не использовал их должным образом, но, очевидно, они не являются решением. Моя проблема не в получении данных для представления (я уже использую модель представления), а в возврате данных обратно в контроллер. Я использую сложные объекты, поэтому даже отправка формы со скрытыми полями не будет хорошим решением, так как потребует от меня сериализации моих объектов, что слишком сложно для задачи, которая должна быть простой. Сейчас я собираюсь взглянуть на сессии.

РЕДАКТИРОВАТЬ 2: Хорошо, я решил проблему с помощью сессий, не может быть проще:)

Ответы [ 3 ]

1 голос
/ 20 июля 2010

Рассмотрим любое из этих решений для сохранения состояния между запросами:

  • храните эти данные в сеансе, кэше или файлах cookie. Выбор будет зависеть от того, что это за данные, насколько переменны данные между пользователями и насколько они сложны.
  • записать эти элементы в скрытые входы. Html.Hidden("foo", myData);

Если вы решили писать на скрытые входы, рассмотрите подделку ViewState . Это неоптимальное решение.

Я бы предпочел сессию в целом. Там нет вмешательства, и вы можете держать сложные объекты. Очевидно, что недостатками Session являются будущая производительность масштабирования, тайм-ауты и параллелизм с несколькими сеансами. Однако некоторые из этих проблем можно легко решить.

0 голосов
/ 20 июля 2010

Посмотрите на некоторые примеры модели представления.это следует отдавать предпочтение использованию материала ViewData.

например, http://geekswithblogs.net/michelotti/archive/2009/10/25/asp.net-mvc-view-model-patterns.aspx

, при этом вы находитесь в цепочке типов, и вы можете получить всю модель в качестве параметра на посту.назад.

0 голосов
/ 20 июля 2010

У меня есть контроллер, который собирает некоторые объекты и передает их на вид используя ViewData

Неверно: определите класс модели представления и сделайте ваш вид строго типизированным к этой модели вместо использования ViewData.

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

Другой вариант - сохранить эту информацию в куки или сеансе.

...