0

我没有找到答案,所以我问这个问题......抱歉打扰了。

我首先使用代码和文章类看起来像

public class Article
{
    ...
    public virtual ICollection<Photos> Images { get; set; }
    ...
}
public class Photo
{
   ...
   public string Location {get;set;}  //can be home, work or anything
   ...
}

现在,在 HomeController 中,我得到所有文章并执行

if(articles.Any())
{
      ViewBag.Articles = articles;
}

然后,在视图中

foreach(var article in ViewBag.Articles)
{
     ... Do things working great here but...
}

所有这些都很好。我想要做的是从每篇文章的 ICollection 中获取一个带有 location=="home" 的图像(例如)。尝试这样做时,我在法语中遇到了不同的错误,他们说我“无法在另一个动态上执行动态类型的请求”、“数据读取器尚未打开”或“dbContext 已关闭”。

感谢您的任何帮助。

4

1 回答 1

1

我认为视图中的 ViewBag.Articles 不包含 Photo 实体。当您尝试访问照片时,上下文已关闭并导致错误。

我的建议是:

在您的控制器中调用 Include 以提前加载 Photo 实体。

http://msdn.microsoft.com/en-us/library/bb738708.aspx

然后,在分配 Articles 时调用 ToList:

ViewBag.Articles = 文章.ToList();

除此之外,最好使用 ViewModel,而不是将数据对象放入 ViewBag。祝你好运。

于 2012-09-10T18:11:48.637 回答