ViewBag不渲染它的值
本文关键字:ViewBag | 更新日期: 2023-09-27 18:12:05
有人能告诉我为什么这个ViewBag不想渲染它的值吗?
ViewBag.fields = from f in db.Fields
where f.FieldId == id
select new { name = f.Name, id = f.FieldId };
@foreach(var item in ViewBag.fields)
{
@item.name//error, cannot find the definition of name
}
And i try also this.
@foreach(var item in ViewBag.fields)
{
@item[0]//error, 'object' does not contain a definition for 'name'
}
但是,如果这样做
@foreach(var item in ViewBag.fields)
{
@item
}
它渲染
{name = Document, id=1}
我该怎么做?
nemesv的链接解释了为什么这不起作用,您基本上被迫创建命名类型而不是使用匿名类型。你可以使用Tuple,但你必须首先将结果转换为IEnumerable,因为Linq to Entities不能使用构造函数参数。
所以要么创建一个类型来传输数据,要么这样做:
ViewBag.fields = (from f in db.Fields
where f.FieldId == id
select new { name = f.Name, id = f.FieldId })
.AsEnumerable()
.Select(x => new Tuple<string, int>(x.name, x.id);
@foreach(var item in ViewBag.fields)
{
item.Item1
}