Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Невозможно применить индексирование с помощью [] к выражению типа "System.Data.Entity.DynamicProxies".

Автор вопроса: TTTОтветов: 1

С ASP.NET MVC3.

В моем контроллере у меня есть эта часть кода

    MasterMindDnetEntities context = new MasterMindDnetEntities();
    List<MasterMindDnet.Games> Games = (from g in context.Games
                                        join u in context.Users on g.g_u_Id equals u.u_Id
                                        where u.u_Login == User.Identity.Name
                                        select g).ToList();
    @ViewBag.Games = Games;
    @ViewBag.GameCount = Games.Count;
    return View("Index");

В контроле Игры нормально работают как список.

На мой взгляд, у меня есть:

@for (int i = 0; i < ViewBag.GameCount; i++)
{
    ViewBag.Games = ViewBag.Games[i];

В строке ViewBag.Games = ViewBag.Games[i]; я получаю исключение:

Невозможно применить индексирование с помощью [] к выражению типа "System.Data.Entity.DynamicProxies.

В предыдущей версии у меня было i < ViewBag.Games.Count; вместо i < ViewBag.GameCount; и было сказано, что ViewBag.Games не имеет определения для Count.

Как я мог решить это?

Спасибо за помощь.

frameworksentity

Ответы

Ответ 1 · рейтинг 1 · Raphaël Althaus

Проблема динамических прокси означает, что вы должны объявлять "статически" то, что находится в вашем ViewBag.

Итак, в вашем представлении, просто сделайте:

@{
    List<MasterMindDnetGames> games = ViewBag.Games;

    for (var i = 0; i < games.Count; i++) {
       var game = games[i];//declare it in the scope you need
       //bla bla bla
    }
}

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы