我有一个 ActionResult 将 TempData 设置为一个对象。
呈现的页面包含一个按钮,该按钮向同一控制器发起 JSON 请求。(对于 jqGrid 人口)。
JSON 请求上的 TempData 为空 - 为什么会发生这种情况?
更奇怪的是,如果我有一个发布到同一个控制器的按钮,并且我点击它而不是我的 JSON 请求按钮,TempData 就会在那里,但是如果我点击 JSON 按钮,那么发布按钮,TempData 将为空。
帮助表示赞赏。
谢谢,克里斯
我有一个 ActionResult 将 TempData 设置为一个对象。
呈现的页面包含一个按钮,该按钮向同一控制器发起 JSON 请求。(对于 jqGrid 人口)。
JSON 请求上的 TempData 为空 - 为什么会发生这种情况?
更奇怪的是,如果我有一个发布到同一个控制器的按钮,并且我点击它而不是我的 JSON 请求按钮,TempData 就会在那里,但是如果我点击 JSON 按钮,那么发布按钮,TempData 将为空。
帮助表示赞赏。
谢谢,克里斯
不要尝试在不重定向时通过 TempData 将数据从一个操作传递到另一个操作。TempData 仅用于重定向。在您按下按钮之前,您页面的某些其他元素很可能正在发出请求,从而导致您在 TempData 中隐藏的项目消失。这就是 TempData 仅用于重定向的原因;只有在重定向时,您才能对下一个请求是什么有信心。
相反,将数据放在呈现的页面中。当您需要请求需要此数据的操作时,请将其作为查询字符串参数显式传递。
HTTP 是无状态的。学会忍受它。不要试图向你的服务器引入状态;如果你这样做了,你会后悔的。