2017-01-12 6 views
0

「Vidly.Models.Movie」に「GetEnumerator」のパブリック定義が含まれていないため、「Vidly.Models.Movie」型の変数に対してforeach文が動作しません」 "@foreach(モデル内のvar映画)」この行の"コントローラのアクションビューにアクセスする際にエラーが発生しました

マイ映画コントローラがこの

public class MoviesController : Controller 
    { 
     private ApplicationDbContext _context; 

     public MoviesController() 
     { 
      _context = new ApplicationDbContext(); 
     } 

     protected override void Dispose(bool disposing) 
     { 
      _context.Dispose(); 
     } 
     // GET: Movies 
     public ActionResult Index() 
     { 
      var movie = _context.Movies.Include(m => m.Genre).ToList(); 
      return View(movie); 
     } 

     public ActionResult Details(int id) 
     { 
      var movie = _context.Movies.Include(m => m.Genre).SingleOrDefault(m => m.Id == id); 
      if (movie == null) 
       return HttpNotFound(); 
      return View(movie); 
     } 
    } 
} 

ですこれは私が持っている私のindexアクションビューの実装

@model Vidly.Models.Movie 
@{ 
    ViewBag.Title = "Index"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<h2>Movies</h2> 

<table> 
    <thead> 
     <tr> 
      <th>Movie</th> 
      <th>Genre</th> 
     </tr> 
    </thead> 
    <tbody> 
     @foreach (var movie in Model) // getting error on this line 
     { 
      <tr> 
       <td> @Html.ActionLink(@movie.Name, "Details", "Movies", new { id = movie.Id}) </td> 
       <td>@movie.Genre.Name</td> 
      </tr> 
     } 
    </tbody> 
</table> 

ですまた、それがあるべきこの1と非常によく似た別のコントローラのための別のアクションビューの実装を実現したがそれはどんなエラーが発生することはありませんでした...ビュー上

+0

この場合、ムービーはムービーのリストではなくモデルタイプですので、ムービーでforeachを実行することはできません。 – MDiesel

答えて

1

お使いのモデルの宣言は間違っている:

@model IEnumerable<Vidly.Models.Movie> 
0

のでビュー内のモデルを1つのムービーとして定義しました。あなたのモデルは列挙型でなければなりません

関連する問題