C# Asp.net MVC中的TempData与Asp.net中的会话工作不完全相同?

C# Asp.net MVC中的TempData与Asp.net中的会话工作不完全相同?,c#,asp.net-mvc,asp.net-mvc-3,C#,Asp.net Mvc,Asp.net Mvc 3,我正在MVC应用程序中使用TempData[],但它并不像那个会话那样工作正常 在登录页面后刷新页面,然后tempdata有空值,请建议我和 也在web.config中使用 <sessionState mode="InProc" timeout="10"/>. 。 刷新后应该为空,因为TempData仅用于单个重定向。在您的情况下,您必须改用会话。TempData仅可用于用户的会话,因此它只能持续到我们读取它并在HTTP请求结束时清除为止。适合TempData使用的场景是数据需要在

我正在MVC应用程序中使用
TempData[]
,但它并不像那个会话那样工作正常

在登录页面后刷新页面,然后tempdata有空值,请建议我和 也在
web.config中使用

<sessionState mode="InProc" timeout="10"/>.

刷新后应该为空,因为TempData仅用于单个重定向。在您的情况下,您必须改用会话。

TempData仅可用于用户的会话,因此它只能持续到我们读取它并在HTTP请求结束时清除为止。适合TempData使用的场景是数据需要在两个请求之间保持的情况——重定向场景。您可以使用方法Keep存储到下一个请求

   TempData.Keep

要从控制器填充数据,请创建操作:

public ActionResult GetData()
{
   // get data from your data source, replace with db call or where to get data
   var data = new [] {"sample1", "sample2"};

   return Json(data, JsonRequestBehavior.AllowGet);
}
在客户端上,当您需要数据时:

$.getJSON(@Url.Action("GetData"), function(data) {
   // fill dropdown instead alert
   alert(data);
});
请参阅更多:


您可以在会话中存储数据

比如说

 public static int Points
        {
            get
            {
                int points = Convert.ToInt32( HttpContext.Current.Session["PointssessionKey"]); 
                return  points;
            }
            set
            {
                HttpContext.Current.Session["PointssessionKey"] = value;
            }
        }
并将温度数据保存为


TempData。保留

请查看,如果您需要会话之类的内容,为什么不直接使用会话?是的,您在刷新页面或单一重定向TempData后立即释放数据。但我认为会话并不是MVC应用程序中的好方法。TempData使用会话。谢谢Syned,它工作得很好。但我还有一个关于会话值的问题。如何将会话管理到通用处理程序类?什么是“进入通用处理程序类”?请描述您的用例。http web请求的Genric处理程序继承“IHttpHandler”接口。大多数情况下,mvc应用程序中不需要处理程序,为什么需要它?Genric处理程序使用jquery用于填充下拉列表。