2011-10-31 76 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); 
} 

对于上一个movieGenre,我收到此错误。

+0

从未有从X y中选择x'写'的理由。 – SLaks

回答

0

没有movieGenre变量。您的意思是ViewBag.movieGenre

+0

如果我编写ViewBag.movi​​eGenre而不是movieGenre,则会出现错误:“表达式树可能不包含动态操作”。 –

+0

当我运行它时,我产生了一个错误:“没有类型为'IEnumerable '的ViewData项具有关键'movieGenre''”。 –

+0

您不能在LINQ查询中使用'动态'ViewBag。你应该使用一个变量而不是ViewBag。 – SLaks

1

如果您想使用选择列表,您必须使用ViewData而不是ViewBag。

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

您在方法声明中有错误。 您有:

public ActionResult SearchIndex(string searchString) 

应该是:

public ActionResult SearchIndex(string movieGenre, string searchString) 
相关问题