ASP MVC - страница подтверждения при добавлении объекта в базу данных

Я делаю простое приложение CRUD с ASP MVC и хочу иметь страницу подтверждения при создании нового объекта и вставке его в базу данных.

Проблема в том, что у меня возникают проблемы с передачей объекта между действиями. Я попытался сохранить его в сеансе после его создания, а затем получить его, когда пользователь подтвердит, но я получаю InvalidOperationException, когда пытаюсь вставить его в базу данных (я использую Entity Framework)

Я даже не уверен, правильно ли я подхожу к этому. Любые идеи?


person pablochan    schedule 03.06.2009    source источник


Ответы (2)


Что мне нравится делать, если схема позволяет это, так это иметь активный флаг (и поле метки времени) в записи. Вы вставляете на первую страницу, не устанавливая этот флаг. Страница подтверждения просто устанавливает активный флаг. Другой процесс может очищать мертвые записи, которые не были подтверждены в пределах определенного диапазона временных меток. И объект или сущность никогда не связывают память сеанса.

отредактируйте для ясности: в результате вы передаете только идентификатор созданного объекта на страницу подтверждения

person Tim Hoolihan    schedule 03.06.2009

Тим - лучший базовый ответ на этот вопрос, но если вы не хотите включать дополнительную логику, вы также можете рассмотреть возможность использования скрытых полей на странице подтверждения, чтобы подтверждение фактически повторно отправляло данные формы (это означает меньше поездок БД и означает, что вы не у вас нет старых неподтвержденных записей в базе данных для фильтрации, но это означает, что больше данных от клиента и к клиенту).

Еще одна альтернатива, которая может быть предпочтительнее с точки зрения пользовательского интерфейса, - это получить ответ Тима, но если JavaScript включен, кнопка отправки вместо всплывающего экрана подтверждения, нажатие кнопки «ОК» отправит и форму, и подтверждение за один раз.

person Chao    schedule 10.09.2010