2012-02-20 18 views
3

私はRazorでASP.Net MVCアプリを持っています。ビューのコレクションにアクセスしようとしています。ここに私のコードは次のとおりです。入れ子にされたfor-loop with razor

foreach (var answer in question.Answers)
@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 /> 
    } 
} 

私が手:

を「のObjectContextインスタンスが配置されており、もはや接続が必要な操作のために使用することはできません。」

それは Questions収集に来るとき、私は .ToList()は持っているが、私は、実行時にTIにアクセスしたい場合、私は Answersコレクションで何を行うのですか?

答えて

3

あなたが熱心に自分のコントローラにAnswersコレクションをロードしていることを確認してください:

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

そしてViewBagに関する、よく、あなたの代わりにビューモデルを使用することもできました。あなたの問題は純粋にあなたが使用しているデータアクセス技術(私はEntityFrameworkと思われる)に関連し、ASP.NET MVCとは関係がないことは言うまでもありません。

0

質問を新しいオブジェクトに投影し、ToArray回答コレクションに投影する必要があります。

.Loadまたは.Include

を使用して、熱心な回答を読み込むこともできます
関連する問題