【问题标题】:ASP.Net MVC TempData - how to keep stateASP.Net MVC TempData - 如何保持状态
【发布时间】:2010-09-24 07:24:53
【问题描述】:
我们使用 ASP.Net MVC TempData 在页面刷新之间存储表单数据。我们在页面上有一个按钮,允许用户执行特定操作。如果用户单击此按钮一次,它工作正常。如果他们两次单击该按钮(这是允许的),我们将丢失 TempData 数据。无论用户单击按钮多少次,我们都需要确保保留 TempData 数据。顺便说一句,按钮激活一个 URL.Action,并利用 Ajax。
【问题讨论】:
标签:
asp.net-mvc
ajax
tempdata
【解决方案2】:
我建议将数据放入 Session 而不是 TempData,因为 TempData 仅将数据存储到下一个请求的末尾。在您的情况下发生的情况是用户每次单击按钮时都会发出请求,因此在第二次单击按钮时,TempData 已经被清除(或将在第一次请求结束时被清除)。
您可以在第一次单击按钮后禁用该按钮,但这可能会导致解决方案不够稳健。使用 Session 和另一个 AJAX 请求清除第一个 AJAX 请求返回成功时所做的 Session 中的数据将确保您知道第一个 AJAX 请求返回并且可以清除 Session 中的数据
【解决方案3】:
无论用户点击多少次按钮,我们都需要确保 TempData 数据被保留
TempData 是将数据传递给下一个操作/请求。 Session 更是如此。
如果您仍想使用 TempData,请确保所有相关的控制器操作再次设置相同的 TempData 值。