Использование «Динамического» для помощи анонимным типам - PullRequest
0 голосов
/ 04 января 2012

Мне нужна возможность получить анонимный тип с моей точки зрения, который был установлен соответствующим контроллером. Согласно этой статье , такая возможность становится возможной в C # 4.0 с ключевым словом «dynamic». Тем не менее, когда я пытаюсь найти реальный пример, я нахожу ответы, варьирующиеся от него: «1003 * возможно » и «1005 * невозможно ».

В моем случае у меня есть контроллер, создающий это:

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 Ответ

2 голосов
/ 04 января 2012

Не уверен, что это именно то, что вы ищете, но вы всегда можете использовать 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;
...