传递到字典不匹配错误的模型项

时间:2014-12-19 22:09:38

标签: c# asp.net-mvc-3 entity-framework-4

我是mvc3的新手,并试图在visual studio 2010中使用实体框架实现一个简单的数据库Web应用程序。我正在关注这篇文章:

msdn article

我已经完成了帖子中写的所有内容。但是我一直在收到这个错误:

  

传递到字典中的模型项是类型的   ' System.Collections.Generic.List`1 [MvcApplication3.Models.BlogContext]&#39 ;,   但是这个字典需要一个类型的模型项   ' MvcApplication3.Models.BlogContext'

我不确定为什么会出现这个错误。我在SO上关注了其他帖子并改变了这样的观点:

@model MvcApplication3.Models.BlogContext

或者

@model List<MvcApplication3.Models.BlogContext>

这些都不起作用。任何帮助将受到高度赞赏,并促进我的学习。

感谢。

2 个答案:

答案 0 :(得分:1)

嗯,实际上,Julie从1 BlogContext中检索所有可用的博客,如下所示:

using (var db = new BlogContext()) 
{ 
  return View(db.Blogs.ToList()); 
}

将Blog对象发送到View。

在视图中,您应该有类似的东西:

@model List<MvcApplication3.Models.Blog>

类型BlogContext的项目。您没有使用完整(博客)上下文列表填充视图...上下文“是”数据库,博客是Blog表中的项目,这些项目实现为C#类实例并提供给列表中包含的视图

答案 1 :(得分:0)

问题是您在控制器中传递了List<BlogContext>,但您的视图设置了BlogContext模型。您应该定义需要使用的内容,如果您需要它,因为将上下文传递给视图实际上是一种不好的做法(您不应该在视图中包含任何逻辑,这就是您拥有控制器的原因)。

在您的操作方法中:

var context = new BlogContext();
return View(context);

在您的视图中

@model MvcApplication3.Models.BlogContext