我总是得到错误 - 无法将'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>
答案 0 :(得分:0)
看起来ta.GetData()
没有返回可以强制转换为IEnumerable<Genre>
的对象。根据错误消息,ta.GetData()
似乎正在返回GenreDataTable
个对象。如果这是正确的,我会看到一些事情:
Genre
个对象而不是GenreDataTable
个对象。GenreDataTable
对象已经是一个集合,那么将其作为返回模型而不是IEnumerable。GenreDataTable
不是Genre
个对象的集合,那么您必须在Razor视图中更新所需的模型,或更新控制器代码以创建所需的类型以匹配模型。