c# - 无法转换 TempData 的内容

标签 c# asp.net-mvc-4 visual-studio-2012 casting .net-4.0

我有一些奇怪的事情。 我的 MVC4 项目在转换 TempData 中模型对象的内容时遇到问题。我可以使用监 window 口看到该对象在 TempData 中正确定义,但转换失败,不会引发任何异常。

是否有一个配置/项目设置会扰乱转换/TempData 中的内容?

例如,给定一个简单的模型:

namespace NewProject.Models
{
    public class MyList
    {
        public List<string> Cars { get; set; }
    }
}

以下代码无法将对象强制转换回来

    Models.List l = new Models.MyList();
    List<string> cars = new List<string>();
    cars.Add("VW");
    cars.Add("Ford");
    l.Cars = cars;
    TempData["Cars"] = l;


    Models.MyList _cars = (Models.MyList)TempData["Cars"];

上面的代码适用于一个全新的项目,但不适用于我的主项目,其中在上面的 _cars 上设置 watch 被列为

    The name '_cars' does not exist in the current context  

... Actor 阵容结束后。即它甚至不为空..

如果我使用 session 而不是 TempData,也会发生完全相同的事情。

更新:

  • 请注意,上面列出的代码应该可以工作 - 没有任何内容 特别错了。
  • 我可以创建一个新项目,并且它可以正常工作。它根本不适用于我的(主)Web 项目。
  • 在 VS2013 Express for Web 中打开同一项目时显示相同的内容 症状 - 即根本没有类型转换。因此它不是 VS2012 具体问题。

最佳答案

尝试做

Models.MyList _cars = TempData["Cars"] as Models.MyList;

此外,异常看起来与变量声明的范围和上下文有关。检查变量作用域是否存在于添加监视表达式的位置。

关于c# - 无法转换 TempData 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30240349/

相关文章:

c# - 如何将单个 key 文件链接到解决方案中的每个项目?

c# - 开始使用 BouncyCaSTLe 加密 dll c#

asp.net - Autofac 与 MVC4 : controller does not have a default constructor

jquery - 从特定文件夹动态加载框 slider 中的图像

c# - EntityFramework 6 RC1 包含在多对多属性上失败

c# - 在 C# 中从 Sitecore 访问回收站

asp.net - 在 mvc 4 中进行多语言(本地化)的最佳方式(性能)是什么?

c# - 在 Visual Studio 2012、MVC4 中完成调试后终止 w3wp.exe

asp.net-mvc - 如何将 Web API 添加到现有的 ASP.NET MVC 4 Web 应用程序项目?

c# - 未找到连接字符串,但仅在设计时