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