Asp.net mvc asp.net mvc中的外键
我有一个视图,我想在其中显示对一本书的评论。 我渲染视图,其中我显示了一本书,如下所示:Asp.net mvc asp.net mvc中的外键,asp.net-mvc,dependency-injection,repository-pattern,asp.net-mvc-4,Asp.net Mvc,Dependency Injection,Repository Pattern,Asp.net Mvc 4,我有一个视图,我想在其中显示对一本书的评论。 我渲染视图,其中我显示了一本书,如下所示: public ActionResult Show(int id) { var model = _repository.GetSeriesById(id); return View(model); } var comments = _db.Comments.Include("User").Where(sId => sId.Id == seriesId).
public ActionResult Show(int id)
{
var model = _repository.GetSeriesById(id);
return View(model);
}
var comments = _db.Comments.Include("User").Where(sId => sId.Id == seriesId).ToList();
在视图中,我使用模型显示注释。(系列有注释,注释有用户id)
}
然后我可以循环浏览评论以显示消息等
@foreach(var comment in comments)
{
@comment.Created
@comment.Message
}
我的问题是当我尝试这样做时:
@comment.User.id
我得到一个空引用错误。我知道您可以使用存储库中的include属性包含外键,如下所示:
public ActionResult Show(int id)
{
var model = _repository.GetSeriesById(id);
return View(model);
}
var comments = _db.Comments.Include("User").Where(sId => sId.Id == seriesId).ToList();
但是在我的控制器中不可能做到这一点,因为我正在发送一个系列模型。
那么,如何显示在我的视图中发布评论的用户?看起来您正在使用实体框架?在运行实际查询时,应该包括外键相关对象。当您在视图中执行此操作时,为时已晚,查询已返回,但未加载外键关系。可能您没有为此注释分配用户?检查数据库,但这是不可能的。。您创建了一个泄漏的抽象,您不想更改它,但您请求了帮助。我使用Viewbag解决了这个问题,并在getCommentsForSeries方法中包含了用户外键。但我觉得Viewbag在页面上很重