我有些奇怪。
我的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/