Не можете применить foreach? - PullRequest
0 голосов
/ 02 августа 2010

Я пытаюсь получить список всех областей в моей базе данных:

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 не может работать с переменными типа «объект», потому что «объект» не содержит общедоступного определения для «GetEnumerator»

Я думаю, что лучшим маршрутом будет изменение запроса вCarreraController и создание запроса linq, который возвращает все имена и сохраняет его в простом List<string>.

Как мне этого добиться?

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

Ответы [ 2 ]

3 голосов
/ 02 августа 2010

ViewData - это словарь от строки к объекту. Итак, вы в основном делаете

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

Просто используйте приведение:

foreach(var area in (WhateverYourCollectionTypeIs)ViewData["Areas"])
0 голосов
/ 02 августа 2010

приведение ViewData ["Области"] к (IEnumerable<AREATYPE>)ViewData["Areas"]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...