【发布时间】:2011-12-23 18:36:10
【问题描述】:
这是我的代码:
public ActionResult MainMenu(int id)
{
using (WebDataContext context = new WebDataContext())
{
//var dataLoadOptions = new System.Data.Linq.DataLoadOptions();
//dataLoadOptions.LoadWith<MenuCache>(x => x.Menu);
//context.LoadOptions = dataLoadOptions;
var menu = context.MenuCaches
.AsEnumerable()
.Where(x => x.ID == id
&& (x.Local == true || x.National == true));
foreach (var item in menu)
{
if (item.Parent.Parent != null && item.Parent.ParentID == 0)
{
menu = item.Children;
}
}
return View(menu.ToList());
}
}
我在网上找到了一些关于如何修复它的选项。一个是做yield return View(menu));,但这给了我ActionResult is not an iterator的错误。函数中的注释代码是我发现的另一个选项,但这也不起作用。有任何想法吗?非常感谢。
【问题讨论】:
-
我相信您的问题是,在您的视图中,您正在访问“MenuCache”的属性,该属性是一个实体,并且在处理数据上下文之前未加载。检查视图中正在访问的属于“MenuCache”属性的任何实体,并使用 DataLoadOptions 预先加载它们。