我是MVC asp.net的新手,我希望使用实体框架打印存储在我的mdf数据库中的数据列表(已有一些数据)。我正在尝试按照微软的mvc教程进行一些修改来学习操作。 我的控制器代码是:
public ActionResult Index()
{
var data= storeDB.GenreTable.ToList();
return View(data);
}
在html代码我有:
@model IEnumerable<projectTest.Models.Genre>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<ul>
@foreach (var genre in Model)
{
<li>@Html.ActionLink(genre.description, "Browse", new {genre = genre.description})</li>
}
</ul>
当我去测试时我收到了
&#39;传入字典的模型项的类型是&#39; System.Collections.Generic.List
1[projectTest.genre]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable
1 [projectTest.Models.Genre]&#39;
这可能是什么解决方案?我已经尝试在web.config中更改一些配置。非常感谢!
答案 0 :(得分:1)
此错误在此实例中的问题非常明确。您已使用以下内容修饰了视图:
@model IEnumerable<projectTest.Models.Genre>
但是,您将此作为模型传递
storeDB.GenreTable.ToList();
这是projectTest.Genre
的列表。为了使这项工作,您需要更新您的视图以接受您传递的类型的IEnumerable:
@model IEnumerable<projectTest.Genre>
或者,您需要使用以下内容将正确的视图模型传递回您的视图(因为我不知道projectTest.Models.Genre
类的外观):
var data= storeDB.GenreTable.Select(x=>new projectTest.Models.Genre{
name = x.Name,
description = x.Description
}).ToList();