c# - 我试图从我的数据库中输出所有数据,并且 foreach 语句中存在错误
问题描述
我正在尝试输出数据库中的所有数据,但我的 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>
该模型是一个名为 MovieViewModel 的简单类,具有 6 个属性
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[]
它告诉 razor 使用的类型Model
。
有了这个:事情应该会奏效。
推荐阅读
- c# - 派生构造函数的简写只传递给基
- python - Pygame中的旋转蒙版碰撞
- php - 如何在 PHP 中将路径枚举树表转换为数组?
- swift - 尝试使用 swift 中的随机键从字典中打印值时出现问题
- javascript - Vue.js 和 Vuex - 将访问令牌存储在商店中并将用户重定向到 URL 以进行登录
- android - Apktool - 重新打包后应用程序立即崩溃
- javascript - 如何将两个数组与一些运算符结合起来?
- angular - TypeError: this.listService.addItem(...).subscribe 不是函数
- spring-boot - Spring Boot Couchbase 请求回购突然停止
- amazon-web-services - 在 AWS Data Pipeline 中将 EmrActivity 转换为 HadoopActivity