// this function working perfectly
public dynamic CountTable()
{
return (from t in db.Users
group t by t.Type into g
select new
{
type = g.Key,
count = g.Count(),
ActiveGroups = (from t in g group t by t.Active into ag select new { active = ag.Key, count = ag.Count() })
}).ToList();
}
// and this loop working in MVC Controller
foreach (dynamic uct in ur.CountTable())
{
int x = uct.count;
}
但不适用于模板:
Line 12: @foreach (dynamic uct in ViewBag.ur.CountTable())
Line 13: {
Line 14: int adet = uct.count;
Line 15: }
第 14 行:"对象"不包含"计数"的定义
为什么?我能做什么?
匿名类型被编译为内部类。
dynamic
使用的标准绑定器将仅绑定到公共类的公共成员。
因此,不能将其与来自不同程序集的匿名类型一起使用。
有关更多信息,请参阅此处。
不能肯定地说,因为我从不使用动态,但我怀疑这是剃刀视图引擎不支持的情况。尽管您可以拥有一个动态模型并直接调用其属性。
例如,以下作品:
@foreach (dynamic uct in new[] { new { Name = "foo" } })
{
<div>@uct.Name</div>
}
但是,如果我们将其移动到其他地方的某个静态方法中:
@foreach (dynamic uct in Foo.SomeStaticMethod())
{
<div>@uct.Name</div>
}
它不再工作,因为我怀疑剃刀会自动转换为对象。
与其使用动态,我建议您定义几个类型并使用强类型。