我有一个MVC3网站,我已经设置了测试另一个网站 - 大部分是快速和肮脏的,所以我还没有去镇上创建模型和视图所有视图的模型类型 - 仅在用户需要输入的情况下。匿名类型缺少成员问题的动态视图 - MVC3
好吧,让我有一个控制器方法,投影Linq序列并将其设置为ViewBag
。
ViewBag.SomeData = Enumerable.Range(1,10).Select(i=> new { Value = i });
在我看来(剃刀C#),那么我想读这一点 - 很简单:
@foreach(dynamic item in ViewBag.SomeData)
{
@:Number: @item.i
}
除,当然,我得到一个RuntimeBinderException
,因为在控制器中创建匿名类型是内部的到web项目的输出程序集,这里的实际Razor代码将运行在由构建管理器生成的不同程序集中,因此,总之DENIED!
很明显,一个'正确的'模型类型可以解决这个问题 - 但是让我们说我根本不想这样做,因为这是我的特权(!) - 如何最好地保持代码最小并保持动态在这里?
使用ExpandoObject的好决定 - 已经忘记了这个选项。 –
@Jon - 谢谢!让我们面对它吧,它是一种违背几乎所有我们以前的C#概念的类型,因此很容易被遗忘。哦,顺便说一句 - C#深度第二版的岩石。 –
我的借口是,我很少做任何动态的事情。很高兴听到你喜欢这本书:) –