2011-10-31 125 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) 
相關問題