我在TempData上存储值有问题,实际上我正在学习TempData的行为,并尝试了来自各个站点的一些可行的例子。这就是问题:我在一些linq操作后打开我的上下文文件我将它保存到我的变量,我使用Breakpoint检查数据,但数据不在TempData中。请任何人都可以告诉我数据存储的位置,以便我可以使用Visual studio的断点进行检查。这是我的代码
public ActionResult Index()
{
ReadContext db = new ReadContext();
var lst = (from p in db.data1
join f in db.data2
on p.ID equals f.ID
select new
{
Sr = p.Sr,
Group = p.Group,
ID=p.ID,
CompanyName = f.CompanyName
}).ToList()
.Select(x => new dataViewModel()
{
ID=x.ID,
Sr = x.Sr,
Group = x.Group,
CompanyName = x.CompanyName
});
TempData["l1"] = lst;
return View(lst);
}
将输出包括为图像(Var的第一个beakpoint)![1]:https://imgur.com/osY345F
TempData的第二个断点![2]:显示空值的https://imgur.com/5oIDN9e在TempData上。我需要做些什么才能看到值在断点中可见。
答案 0 :(得分:0)
默认的TempData提供程序使用cookie。要在TempData中存储对象,您需要先将其序列化。
TempData["l1"] = JsonConvert.SerializeObject(lst); //using Newtonsoft.Json;
应尽量减少TempData中存储的数据量。而不是将整个记录存储在TempData中,我建议只存储一个ID列表。
应用程序是否只使用TempData,相对较小 数据量(最多500字节)?如果是这样,cookie TempData提供者 将为每个携带TempData的请求添加一小笔费用。如果不, 会话状态TempData提供程序可以避免有益 在每个请求中绕过大量数据,直到 消耗TempData。
[ASP.NET核心中的会话和应用程序状态简介] [https://docs.microsoft.com/en-us/aspnet/core/fundamentals/app-state?tabs=aspnetcore2x#tempdata]
答案 1 :(得分:0)
var lst = (from p in db.data1
join f in db.data2
on p.ID equals f.ID
select new
{
Sr = p.Sr,
Group = p.Group,
ID=p.ID,
CompanyName = f.CompanyName
}).ToList()
.Select(x => new dataViewModel()
{
ID=x.ID,
Sr = x.Sr,
Group = x.Group,
CompanyName = x.CompanyName
}).ToList();