我正在尝试获取数据库中所有区域的列表:
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(????
答案 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"]