2012-02-20 83 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集合