Вопрос

Я использую MVC3 с помощью .NET 4.0, и когда призывает мою форму создания, я получаю ObjectDisposedException, говоря, что объект был утилизирован.Исключение Ocurrs на этом операторе страницы MVC3:

@Html.DropDownListFor(model => model.Country, GeneralActivity.GetCountriesMVC("NL"))
.

и взысканный метод похож на это:

IEnumerable<SelectListItem> GetCountriesMVC(string preselectCountryCode)
{
   ... some error checking code omited for simplicity ...
   IEnumerable<SelectListItem> qlist;
   using (Data.MyDataContext ctx = new Data.MyDataContext()) {
      qlist = from p in ctx.Countries select new SelectListItem {
          Text = p.CountryName,
          Value = p.CountryCodeId,
          Selected = (p.CountryCodeId == preselectCountryCode)
      };
   }
   return qlist;
}
.

Во время отладки i выполняется до оператора возврата, а затем оно уходит и приводит меня к вызовому оператору @HTML на странице MVC, и исключение бросается.

Экземпляр QList объявляется вне оператора с использованием и инициализируется запросом LINQ, поэтому я не понимаю, почему он говорит, что объект был утилизирован.

Это было полезно?

Решение

На самом деле вы не выполняете запрос - поэтому, когда вы пытаетесь получить доступ к QList, он пытается подключиться к базе данных, и соединение закрыто.

Попробуйте лить запрос в список, чтобы он будет храниться в памяти:

 qlist = (from p in ctx.Countries select new SelectListItem {
      Text = p.CountryName,
      Value = p.CountryCodeId,
      Selected = (p.CountryCodeId == preselectCountryCode)
  }).ToList();
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top