0

使用 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.

我怎么能解决这个问题?

感谢您的帮助。

4

1 回答 1

1

动态代理的问题意味着您必须“静态地”声明 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
    }
}
于 2012-04-08T11:47:30.960 回答