使用“动态”辅助匿名类型

时间:2012-01-04 01:00:14

标签: c# asp.net-mvc asp.net-mvc-3 dynamic anonymous-types

我希望能够从我的视图中获取匿名类型,这是由相应的控制器建立的。根据{{​​3}},使用'dynamic'关键字可以在C#4.0中实现这种能力。但是,当我试图找到一个实际的例子时,我发现答案的范围从“this article”到它有点'is possible

在我的情况下,我有一个控制器创建这个:

XElement headings = XElement.Parse(part.TagList);
var items = from heading in headings.Descendants("heading")
            select new {
                name = heading.Attribute("name").Value, 
                tags = heading.Attribute("tags").Value,
                content = shapeHelper.List() //This is a dynamic object!!!
            }; //can I add 'as dynamic;' here????

简而言之,如果没有静态类型,我的视图可以直接进入模型,那将是很好的:

@{
//Currently this next line returns an error saying that 
//'object' contains no method 'Count'
int foo = Model.items.Count();  

//This 'foreach' works.
foreach(dynamic lineItem in Model.items){
  //But this does not work. Gives another "'object' has no definition for 'name'"
  <p>@lineItem.name</p>     }
}

可能的?

1 个答案:

答案 0 :(得分:2)

不确定这正是您要找的,但您可以随时使用ViewBag

<强>控制器

ViewBag.Items = from heading in headings.Descendants("heading")
                select new {
                    name = heading.Attribute("name").Value, 
                    tags = heading.Attribute("tags").Value,
                    content = shapeHelper.List()
                };

查看

ViewBag.Items.First().content;