2009-06-03 11 views
1

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

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

I ' я даже не уверен, правильно ли я подхожу к этому. Есть идеи?

ответ

4

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

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

2

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

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