1

我有一个 ActionResult 将 TempData 设置为一个对象。

呈现的页面包含一个按钮,该按钮向同一控制器发起 JSON 请求。(对于 jqGrid 人口)。

JSON 请求上的 TempData 为空 - 为什么会发生这种情况?

更奇怪的是,如果我有一个发布到同一个控制器的按钮,并且我点击它而不是我的 JSON 请求按钮,TempData 就会在那里,但是如果我点击 JSON 按钮,那么发布按钮,TempData 将为空。

帮助表示赞赏。

谢谢,克里斯

4

1 回答 1

5

不要尝试在不重定向时通过 TempData 将数据从一个操作传递到另一个操作。TempData 仅用于重定向。在您按下按钮之前,您页面的某些其他元素很可能正在发出请求,从而导致您在 TempData 中隐藏的项目消失。这就是 TempData 仅用于重定向的原因;只有在重定向时,您才能对下一个请求是什么有信心。

相反,将数据放在呈现的页面中。当您需要请求需要此数据的操作时,请将其作为查询字符串参数显式传递。

HTTP 是无状态的。学会忍受它。不要试图向你的服务器引入状态;如果你这样做了,你会后悔的。

于 2009-08-19T16:05:50.883 回答