MVC - 从数据库获取值列表

时间:2014-08-04 11:50:10

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

我是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中更改一些配置。非常感谢!

1 个答案:

答案 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();