我有些奇怪。
我的MVC4项目在将模型对象的内容转换为TempData时遇到问题。我可以使用监视窗口在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上设置手表的主要项目如下:

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


...在演员阵容发生之后。即它甚至不为空。

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

更新:


请注意,上面列出的代码应该可以工作-没有任何内容
特别是错了。
我可以创建一个新项目,它可以正常工作。它根本无法在我的(主要)Web​​项目上工作。
在VS2013 Express for Web中打开的相同项目显示相同
症状-即完全没有投射。因此,它不是VS2012
具体问题。

最佳答案

尝试做

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


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

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

10-12 15:29