无法从TempData强制转换

时间:2018-02-07 07:40:53

标签: c# asp.net casting

假设我有2页

预订

public async Task<IActionResult> OnPost()
        {
            ...
            List<string> pageList = new List<string>();
            pageList.Add(Path.GetFileName(Request.Path));
            TempData["StackList"] = pageList;
            return Page();
        }

修改

public async Task<IActionResult> OnGetAsync(int? id)
        {
            ...
            var list = TempData["StackList"] as List<string>;//<<Problem
            ...
            return Page();
        }

施展List<string>

时,我总是得到null

这是我到目前为止的尝试:

  1. 尝试将普通字符串保存到TempData。我可以正常恢复。

  2. 尝试使用`(List)TempData [&#34; StackList&#34;]。仍然无效。

  3. 保存后,我进入下一行。我可以正常检索它。

  4. 如果我没有施展它。var list = TempData["StackList"]我可以得到它但不能使用它,因为它不知道它是什么类型。

  5. 我尝试创建一个新的清洁项目并重现它。问题仍然存在。

  6. 任何人都可以给我一些建议,如果我施展它,为什么我总是得到null? 我现在的解决方案是将列表保存到Json中并将其保存回List。

    我看到阅读官方文档,挖掘其他相关帖子和教程博客。我通常应该这样做。 或者可能是因为我的MS Visual Studio社区2017破了还是什么? 我目前正在使用.net core 2.0。

1 个答案:

答案 0 :(得分:0)

必须看这个链接 我希望它有助于理解TempData的范围和边界

what is the scope and visibility of TempData in ASP.NET MVC?