我在Visual Studio 2010中为我的ASP.NET应用程序中的搜索方法收到了“检测到无法访问的代码”消息。 这是方法:
public ActionResult SearchIndex(string artist, string albumGenre, string searchString)
{
var GenreList = new List<string>();
var GenreQuery = from d in storeDB.Albums orderby d.Genre.Name select d.Genre.Name;
GenreList.AddRange(GenreQuery.Distinct());
ViewBag.albumGenre = new SelectList(GenreList);
var ArtistList = new List<string>();
var ArtistQuery = from a in storeDB.Artists orderby a.Name select a.Name;
ArtistList.AddRange(ArtistQuery.Distinct());
ViewBag.artist = new SelectList(ArtistList);
var albums = from m in storeDB.Albums select m;
if (string.IsNullOrEmpty(artist))
{
return View(albums);
}
else
{
return View(albums.Where(f => f.Artist.Name == artist));
}
if (!String.IsNullOrEmpty(searchString))
{
return View(albums.Where(s => s.Title.Contains(searchString)));
}
if (string.IsNullOrEmpty(albumGenre))
{
return View(albums);
}
else
{
return View(albums.Where(x => x.Genre.Name == albumGenre));
}
}
对于这个声明我收到了消息:
if (!String.IsNullOrEmpty(searchString))
{
return View(albums.Where(s => s.Title.Contains(searchString)));
}
我哪里出错了?
答案 0 :(得分:2)
因为在之前的if-else
区块中,您肯定会从if
或else
区块返回并放弃您的方法。
所以在任何情况下都不会执行以下代码。
答案 1 :(得分:1)
之前的if
在其两个分支中都有return
语句,因此您的函数将在到达第二个if
之前始终返回。
答案 2 :(得分:0)
这是更正后的代码
public ActionResult SearchIndex(string artist, string albumGenre, string searchString)
{
var GenreList = new List<string>();
var GenreQuery = from d in storeDB.Albums orderby d.Genre.Name select d.Genre.Name;
GenreList.AddRange(GenreQuery.Distinct());
ViewBag.albumGenre = new SelectList(GenreList);
var ArtistList = new List<string>();
var ArtistQuery = from a in storeDB.Artists orderby a.Name select a.Name;
ArtistList.AddRange(ArtistQuery.Distinct());
ViewBag.artist = new SelectList(ArtistList);
var albums = from m in storeDB.Albums select m;
if (!string.IsNullOrEmpty(artist))
{
return View(albums.Where(f => f.Artist.Name == artist));
}
else if (!String.IsNullOrEmpty(searchString))
{
return View(albums.Where(s => s.Title.Contains(searchString)));
}
else if (!string.IsNullOrEmpty(albumGenre))
{
return View(albums.Where(x => x.Genre.Name == albumGenre));
}
else
{
return View(albums);
}
}