Вложенная петля в бритве - PullRequest
3 голосов
/ 20 февраля 2012

У меня есть приложение ASP.Net MVC с Razor. Я пытаюсь получить доступ к коллекции в представлении. Вот мой код:

@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 во время выполнения?

Ответы [ 2 ]

3 голосов
/ 20 февраля 2012

Убедитесь, что вы с нетерпением загрузили коллекцию Answers в свой контроллер:

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

А что касается ViewBag, вы могли бы вместо этого использовать модель представления.Не говоря уже о том, что ваша проблема связана исключительно с технологией доступа к данным, которую вы используете (я полагаю, EntityFramework) и не имеет ничего общего с ASP.NET MVC.

0 голосов
/ 20 февраля 2012

Вам необходимо спроецировать вопрос в новый объект и ToArray коллекцию ответов.

Вы также можете загрузить коллекцию ответов, используя .Load или .Include

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...