我正在使用 ASP MVC 制作一个简单的 CRUD 应用程序,我希望在创建新对象并将其插入数据库时有一个确认页面。
问题是我无法在动作之间传递对象。我试图在创建后将其保存在会话中,然后在用户确认时检索它,但是当我尝试将其插入数据库时出现 InvalidOperationException (我正在使用实体框架)
我什至不确定我是否以正确的方式接近这一点。有任何想法吗?
我正在使用 ASP MVC 制作一个简单的 CRUD 应用程序,我希望在创建新对象并将其插入数据库时有一个确认页面。
问题是我无法在动作之间传递对象。我试图在创建后将其保存在会话中,然后在用户确认时检索它,但是当我尝试将其插入数据库时出现 InvalidOperationException (我正在使用实体框架)
我什至不确定我是否以正确的方式接近这一点。有任何想法吗?
如果架构允许,我喜欢做的是在记录上有一个活动标志(和时间戳字段)。您在第一页上插入而不设置该标志。确认页面仅设置活动标志。另一个进程可以清除在其时间戳的某个范围内未确认的死记录。并且对象或实体永远不会占用会话内存。
为清楚起见进行编辑:因此,您只需将创建的实体的 id 传递给确认页面
Tim's 是对此的最佳基本答案,但如果您不想包含额外的逻辑,您也可以考虑在确认页面上使用隐藏字段,这样确认实际上会重新提交表单数据(这意味着更少的 DB 行程,意味着您不需要) t 有旧的未经确认的条目位于数据库中以过滤掉,但意味着更多的数据进出客户端)。
从 UI 的角度来看,可能首选的另一种选择是让 Tim 的答案,但如果启用了 JavaScript,则使提交按钮改为弹出确认屏幕,单击“确定”将一次性提交表单和确认。