2012-02-20 82 views
3

我有一个Razor的ASP.Net MVC应用程序。我尝试访问视图中的集合。这里是我的代码:在剃须刀中嵌套for-loop

@foreach (var question in ViewBag.Questions) { 
    <p>@question.Name</p> 

    foreach (var answer in question.Answers) { 
     <input type="radio" name="@answer.QuestionId" value='@answer.id' /> @answer.Text<br /> 
    } 
} 

foreach (var answer in question.Answers)我得到:

“的ObjectContext的实例已经设置,不能再用于需要连接的操作”

我有一个.ToList()当涉及到Questions集合,但我该怎么用Answers集合做,如果我想在运行时访问TI?

回答

3

确保已急切地加载Answers收集在你的控制器:

public ActionResult Foo() 
{ 
    ViewBag.Questions = db.Questions.Include("Answers").ToList(); 
    return View(); 
} 

以及有关ViewBag,好了,你可以使用一个视图模型来代替。更不用说你的问题纯粹与你正在使用的数据访问技术有关(我假设为EntityFramework),并且与ASP.NET MVC无关。

0

您需要将问题投影到一个新的对象中,并且ToArray答案集合。

您也可以使用.Load.Include

热切加载Answers集合