ASP MVC - подтвердить страницу при добавлении объекта в базу данных - PullRequest
1 голос
/ 03 июня 2009

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

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

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

Ответы [ 2 ]

4 голосов
/ 03 июня 2009

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

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

2 голосов
/ 10 сентября 2010

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

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

...