c# - 在 ViewBag 中存储匿名对象

标签 c# asp.net-mvc-3 reflection anonymous-types viewbag

这可能是一个愚蠢的问题,但我正试图在 ViewBag 中填充一个匿名对象,如下所示:

ViewBag.Stuff = new { Name = "Test", Email = "user@domain.com" };

并像这样从 View 中访问它:

@ViewBag.Stuff.Name

我知道 ViewBag 是动态的,“Stuff”是一个匿名对象...但是当我从上面的 View 行使用调试器查看时,我可以看到所有具有正确值的属性。为什么模型绑定(bind)器对此如此困难?

有没有一种无需创建模型类即可完成此操作的好方法?我想继续使用 new {}

最佳答案

本质上,问题是匿名类型是作为内部生成的 (see answer),使得无法从 View 中对对象属性进行硬类型引用。这篇文章提供了更详细的解释:

http://www.heartysoft.com/anonymous-types-c-sharp-4-dynamic

可以通过使用动态匿名包装类(@Dakill 的回答)来完成,但很快就会变得丑陋,并且应该让程序员质疑他/她为什么要这样做。

关于c# - 在 ViewBag 中存储匿名对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8980045/

相关文章:

c# - 尝试将属性路由与 autofac 一起使用的异常

asp.net-mvc - 如何找出在MVC3中调用我的 View 的 Controller Action 的名称?

java - Java中通过反射调用被调用方法的返回方法

java - getDeclaredFields 具有实际运行时类型,适用于 Unsafe.objectFieldOffset(f)

java - 反射(reflect)具有泛型类型参数的方法时出现 NoSuchMethodException

c# - 事件通知引擎 - MSMQ

C# linq groupby 包括 json

c# - MVC 5 如何在 rdlc 报告中使用对象

javascript - 单击链接可放大图像

asp.net-mvc - MVC 区域 - 非区域路由解析为区域