似乎 viewbag 是 System.Web.Mvc.DynamicViewDataDictionary 的一个实例。这是内部的,所以我不能将 ViewBag 转换到它。并且该类型不公开 IDictionary 接口(interface)(cf ExpandoObject)
那我该怎么做
foreach(var kv in <ViewBag magic>)
{
.....
}
我看到 System.Web.Mvc.DynamicViewDataDictionary 有一个 Keys 方法,但这没有帮助,因为我无法动态获取动态对象值。即我做不到
var k = "Key1";
var v = ViewBag[k];
最佳答案
ViewData
属性(property)——一个 ViewDataDictionary
-- 将包含与 ViewBag
相同的数据( ViewBag
基本上是 ViewData
的包装)。
A ViewDataDictionary
是一个可以迭代的结构(它实现了 IDictionary<string, object>
和各种 IEnumerable
s):
foreach (KeyValuePair<string, object> kvp in ViewData)
{
}
有很多方法可以投ExpandoObject
s 至 IDictionary<string, object>
s 但你基本上还在同一条船上,因为你需要知道你正在使用什么类型来从 object
中转换它们一些有用的东西。
关于c# - 如何枚举 MVC 5 viewbag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29929801/