Asp.net中的TempData MVC与Asp.net中的会话工作方式完全不同?

时间:2013-08-30 06:52:57

标签: c# asp.net-mvc asp.net-mvc-3

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

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

中使用
<sessionState mode="InProc" timeout="10"/>.

3 个答案:

答案 0 :(得分:0)

刷新后应该为null,因为TempData仅用于单个重定向。在您的情况下,您必须使用Session。

答案 1 :(得分:0)

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

   TempData.Keep

http://msdn.microsoft.com/en-us/library/ee703497.aspx

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

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);
});

查看更多:

AJAX request aspnet

similar question but for post

答案 2 :(得分:0)

您可以将数据存储在会话中。

例如

 public static int Points
        {
            get
            {
                int points = Convert.ToInt32( HttpContext.Current.Session["PointssessionKey"]); 
                return  points;
            }
            set
            {
                HttpContext.Current.Session["PointssessionKey"] = value;
            }
        }

并将临时数据保存为

<强> TempData.Keep