不能申请foreach?

时间:2010-08-01 22:56:08

标签: c# asp.net-mvc-2

我正在尝试获取数据库中所有区域的列表:

public ActionResult Index()
{
    var carreras = repo.FindAllCarreras().ToList();
    AreaRepository area = new AreaRepository();
    ViewData["Areas"] = area.FindAllAreas(); //Return IQueryable<>
    return View("Index", carreras);
}

在视图中:

<% foreach (var area in ViewData["Areas"])
       { %> 
           <p><%: area %></p>
    <% } %>

我收到错误:

  

foreach语句不能对'object'类型的变量进行操作,因为   'object'不包含'GetEnumerator'

的公共定义

我认为最好的路线是修改CarreraController中的查询并创建一个linq查询,该查询返回所有名称并将其保存为简单的List<string>

我怎样才能做到这一点?

ViewData["Areas"] = area.FindAllAreas().Select(????

2 个答案:

答案 0 :(得分:3)

ViewData是一个从字符串到对象的字典。所以你基本上在做

object o = ViewData["Areas"];
foreach(var area in o)
...

只需使用演员:

foreach(var area in (WhateverYourCollectionTypeIs)ViewData["Areas"])

答案 1 :(得分:0)

将ViewData [“Areas”]投射到(IEnumerable<AREATYPE>)ViewData["Areas"]