Asp.net mvc 3 在ASP.NET应用程序中检测到无法访问的代码

Asp.net mvc 3 在ASP.NET应用程序中检测到无法访问的代码,asp.net-mvc-3,c#-4.0,Asp.net Mvc 3,C# 4.0,我在Visual Studio 2010中收到一条“检测到无法访问的代码”消息,用于我的ASP.NET应用程序中的搜索方法。 方法如下: public ActionResult SearchIndex(string artist, string albumGenre, string searchString) { var GenreList = new List<string>(); var GenreQuery = from d in s

我在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
在其两个分支中都有
return
语句,因此您的函数在到达第二个
if
if

之前将始终返回上一个
if
在其两个分支中都有
return
语句,因此,在到达第二个
if

之前,您的函数将始终返回,因为在上一个
if else
块中,您肯定会从
if
else
块返回并放弃您的方法


因此,在任何情况下都不会执行以下代码。

因为在前面的
if else
块中,您肯定会从
if
else
块返回并放弃您的方法


因此,您的以下代码在任何情况下都不会执行。

以下是更正后的代码

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);
      }

}  
public ActionResult SearchIndex(字符串艺术家、字符串专辑类型、字符串搜索字符串)
{
var GenreList=新列表();
var GenreQuery=来自storeDB.Albums orderby d.Genre.Name选择d.Genre.Name;
GenreList.AddRange(GenreQuery.Distinct());
ViewBag.albumGene=新建选择列表(GenreList);
var ArtistList=新列表();
var ArtistQuery=从storeDB.Artists orderby a.Name中选择a.Name;
AddRange(ArtistQuery.Distinct());
ViewBag.artist=新选择列表(ArtistList);
var albums=来自storeDB中的m。albums选择m;
如果(!string.IsNullOrEmpty(艺术家))
{
返回视图(相册,其中(f=>f.Artist.Name==Artist));
}
如果(!String.IsNullOrEmpty(searchString))为else
{
返回视图(albums.Where(s=>s.Title.Contains(searchString));
}
如果(!string.IsNullOrEmpty(AlbumType))
{
返回视图(albums.Where(x=>x.Genre.Name==AlbumGene));
}
其他的
{
返回视图(相册);
}
}  

以下是更正后的代码

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);
      }

}  
public ActionResult SearchIndex(字符串艺术家、字符串专辑类型、字符串搜索字符串)
{
var GenreList=新列表();
var GenreQuery=来自storeDB.Albums orderby d.Genre.Name选择d.Genre.Name;
GenreList.AddRange(GenreQuery.Distinct());
ViewBag.albumGene=新建选择列表(GenreList);
var ArtistList=新列表();
var ArtistQuery=从storeDB.Artists orderby a.Name中选择a.Name;
AddRange(ArtistQuery.Distinct());
ViewBag.artist=新选择列表(ArtistList);
var albums=来自storeDB中的m。albums选择m;
如果(!string.IsNullOrEmpty(艺术家))
{
返回视图(相册,其中(f=>f.Artist.Name==Artist));
}
如果(!String.IsNullOrEmpty(searchString))为else
{
返回视图(albums.Where(s=>s.Title.Contains(searchString));
}
如果(!string.IsNullOrEmpty(AlbumType))
{
返回视图(albums.Where(x=>x.Genre.Name==AlbumGene));
}
其他的
{
返回视图(相册);
}
}