无法将从数据集中检索到的数据转换为模型类型ienumerables

时间:2014-02-07 04:41:16

标签: c# asp.net-mvc-4

我总是得到错误 - 无法将'MvcMusicStore.Models.MusicStore.GenreDataTable'转换为'System.Collections.Generic.IEnumerable' 我在下面粘贴我的代码 控制器:

using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Web;
  using System.Web.Mvc;
  using MvcMusicStore.Models;

  namespace MvcMusicStore.Controllers
  {
  public class StoreController : Controller
  {    

    // GET: /Store/
    public ActionResult Index()
    {
         MvcMusicStore.Models.MusicStoreTableAdapters.GenreTableAdapter ta= new Models.MusicStoreTableAdapters.GenreTableAdapter();
         var genres = ta.GetData().AsEnumerable();
         return View(genres);
    }

我的模特:

namespace MvcMusicStore.Models
{
public partial class Genre
{
    public int GenreId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public List<Album> Albums { get; set; }
}

}

最后是观点:

@model IEnumerable<MvcMusicStore.Models.Genre>

@{
ViewBag.Title = "Index";
}

<h3>Browse Genres</h3>
<p>
Select from @Model.Count()
genres:
</p>
<ul>
@foreach (var genre in Model)
{
       <li>@Html.ActionLink(genre.Name,
"Browse", new { genre = genre.Name })</li>

}
</ul>

1 个答案:

答案 0 :(得分:0)

看起来ta.GetData()没有返回可以强制转换为IEnumerable<Genre>的对象。根据错误消息,ta.GetData()似乎正在返回GenreDataTable个对象。如果这是正确的,我会看到一些事情:

  1. 在Razor视图中,模型正在查找IEnumerable的Genre个对象而不是GenreDataTable个对象。
  2. 如果您的GenreDataTable对象已经是一个集合,那么将其作为返回模型而不是IEnumerable。
  3. 如果GenreDataTable不是Genre个对象的集合,那么您必须在Razor视图中更新所需的模型,或更新控制器代码以创建所需的类型以匹配模型。