2011-10-31 2 views
0

비디오 저장소 서비스를위한 ASP.NET MVC 3 프로젝트를 작성합니다. CRUD MovieController 클래스를 추가하고 검색 기능을 추가합니다. 그러나 오류 메시지가 나타납니다. "메서드 이름에 'movieGenre'가 현재 컨텍스트에 존재하지 않습니다. 다음은 코드입니다.'movieGenre'라는 이름이 현재 컨텍스트에 존재하지 않습니다.

public ActionResult SearchIndex(string searchString) 
{ 
    var GenreList = new List<string>(); 
    var GenreQuery = from d in db.Movies 
        orderby d.Genre 
        select d.Genre; 
    GenreList.AddRange(GenreQuery.Distinct()); 
    ViewBag.movieGenre = new SelectList(GenreList); 

    var movies = from m in db.Movies select m; 

    if (!String.IsNullOrEmpty(searchString)) 
    { 
     movies = movies.Where(s => s.Title.Contains(searchString)); 
    } 

    if (string.IsNullOrEmpty(ViewBag.movieGenre)) 
    { 
     return View(movies); 
    } 
    else 
    { 
     return View(movies.Where(x => x.Genre == movieGenre)); 
    } 

    return View(movies); 
} 

마지막으로 영화 Genre의 경우이 오류가 발생합니다.

+0

결코 y를 선택 x'에서 X에서'쓸 이유가 없다. – SLaks

답변

0

변수가 없습니다. movieGenre입니다.

ViewBag.movieGenre을 의미합니다.

+0

movieGenre 대신 ViewBag.movieGenre를 작성하면 "표현식 트리에 동적 작업이 포함되어 있지 않을 수 있습니다."라는 오류가 발생합니다. –

+0

실행하면 오류가 발생합니다. " 'MovieGenre'키가있는 'IEnumerable '형식의 ViewData 항목이 없습니다. –

+0

LINQ 쿼리에서'dynamic' ViewBag를 사용할 수 없습니다. ViewBag 대신 변수를 사용해야합니다. – SLaks

1

선택 목록을 사용하려면 ViewBag 대신 ViewData를 사용해야합니다.

ViewData["Genre"] = new SelectList(GenreList); 
0

메소드 선언에 오류가 있습니다. 당신은이 :

public ActionResult SearchIndex(string searchString) 

가되어야한다

public ActionResult SearchIndex(string movieGenre, string searchString) 
관련 문제