【发布时间】:2015-11-19 12:31:10
【问题描述】:
为什么我们无法在 ajax 请求期间访问 TempData。
控制器:
TempData["MytempData"] = MyMessage;
return Json(true, JsonRequestBehavior.AllowGet)
查看:
$.ajax(
{
type: 'POST',
success: function (result) {
value=TempData["MytempData"];//why this is not possible
},
});
我也知道我可以使用 json 对象访问这些数据,如下
return Json(new {isSucess=true,Message=MyMessage},JsonRequestBehavior.AllowGet)
但我的问题不在于我应该如何将数据从控制器传递到视图。我只是想知道在 ajax 请求期间我们无法访问 TempData 的原因。
【问题讨论】:
-
你混淆了 Javascript 代码和 C# 代码。
-
@SLaks 1.当我们重新加载整个页面时,会执行 tempdata 行 2. 当发送 ajax 请求时,tempdata 行也会在服务器端执行。在这两种情况下都会执行 tempdata 行。我们在第一种情况下得到值,但在第二种情况下没有。为什么?
-
TempData在 JS 代码中首先不存在。您需要发送和读取 HTTP 响应。 -
Razor 代码在发送到客户端之前在服务器上进行评估。
var value的值将是TempData["MytempData"]的初始值。除非您在 ajax 调用中向客户端发送新值,否则它永远不会更改,因为页面没有重新加载。
标签: c# asp.net ajax json asp.net-mvc