我正在尝试从数据库中输出所有数据,但是我的foreach语句出现此错误,我无法解决2天
控制器文件:
public ActionResult Index()
{
PAPEntities db = new PAPEntities();
MoviesData[] movies = db.MoviesData.ToArray();
movies.Select(movie => new MovieViewModels
{
MovieID = movie.MovieID,
MovieName = movie.MovieName,
MovieDescription = movie.MovieDescription,
MoviePrice = movie.MoviePrice,
MovieCategory = movie.MovieCategory,
MovieYear = movie.MovieYear
});
return View(movies);
}
风景:
<table class="table table-bordered table-responsive table-hover">
<tr>
<th><b>Movie Name </b></th>
<th><b>Movie Category </b></th>
<th><b>Movie Year </b></th>
<th><b>Movie Price</b></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.MovieName</td>
<td>@item.MovieCategory</td>
<td>@item.MovieYear
<td>@item.MoviePrice</td>
</tr>
}
</table>
该模型是具有6个属性的简单类校准的MovieViewModel
foreach语句无法对类型为“ MovieViewModels”的变量进行操作,因为“ MovieViewModels”不包含“ GetEnumerator”的公共实例定义
这里有几点:
Select
对于1,请注意,您应该在缓冲之前进行投影-如果LINQ可以在投影中绕过对象,则没有必要创建对象的实际实例MoviesData
,因此:
(注意:我拥有重命名MovieViewModels
为的自由MovieViewModel
)
MovieViewModel[] movies = db.MoviesData.Select(movie => new MovieViewModel
{
MovieID = movie.MovieID,
MovieName = movie.MovieName,
MovieDescription = movie.MovieDescription,
MoviePrice = movie.MoviePrice,
MovieCategory = movie.MovieCategory,
MovieYear = movie.MovieYear
}).ToArray();
return View(movies);
(这也意味着SQL可能只限于您感兴趣的列,以避免获取不必要的列)
然后,在视图中,您应该具有:
@model MovieViewModel[]
告诉剃刀用于的类型Model
。
这样:事情应该起作用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句