0

我将 MVC3 与 .NET 4.0 一起使用,当我的创建表单被调用时,我得到一个 ObjectDisposedException ,表明该对象已被释放。此 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;
}

在调试期间,我执行到 return 语句,然后它离开并将我带到 MVC 页面上的调用 @Html 语句并引发异常。

qlist 实例在 USING 语句之外声明并由 LINQ 查询初始化,所以我不明白为什么它说对象已被释放。

4

1 回答 1

1

您实际上并没有执行查询 - 因此,当您尝试访问 qList 时,它会尝试连接回您的数据库,并且连接已关闭。

尝试将您的查询转换为列表,以便将其存储在内存中:

 qlist = (from p in ctx.Countries select new SelectListItem {
      Text = p.CountryName,
      Value = p.CountryCodeId,
      Selected = (p.CountryCodeId == preselectCountryCode)
  }).ToList();
于 2012-10-03T15:15:06.800 回答