Razor视图报CS1579错误:foreach无法遍历Kitap类型的问题咨询
排查Razor视图CS1579错误原因及解决方法
错误信息
Severity Code Description Project File Line Suppression State
Error CS1579 foreach statement cannot operate on variables of type 'Kitap' because 'Kitap' does not contain a public instance definition for 'GetEnumerator' ilk C:\Users\90537\source\repos\ilk\ilk\Views\Home\Index5.cshtml 17 Active
控制器代码
public IActionResult Index5() { var ktp = new List<Kitap>() { new Kitap(){Id=1,KitapAd="alem",Yazar="verne"}, new Kitap(){Id=2,KitapAd="mektup",Yazar="zwayg"}, new Kitap(){Id=3,KitapAd="noel" ,Yazar="ben"} }; return View(ktp); }
视图代码
@model ilk.Models.Kitap @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index5</title> </head> <body> <table> @foreach (var ks in Model) { <tr> <td>ks.</td> </tr> } </table> </body> </html>
错误原因
控制器向视图传递的是**List<Kitap>集合对象**,但视图顶部@model声明的是单个Kitap实体类。foreach语句仅支持遍历实现IEnumerable<T>接口的可枚举集合,单个Kitap对象不存在GetEnumerator方法,因此触发CS1579错误。
解决方法
- 修正视图模型类型:将视图顶部的
@model改为集合类型,与控制器传递的数据匹配:@model List<ilk.Models.Kitap> - 修正属性输出代码:原视图中
<td>ks.</td>为无效写法,需输出实体具体属性,示例如下:<tr> <td>@ks.Id</td> <td>@ks.KitapAd</td> <td>@ks.Yazar</td> </tr>
内容的提问来源于stack exchange,提问作者flutter app
相关产品推荐
相关产品推荐

