В приложении ASP.NET обнаружен недоступный код - PullRequest
0 голосов
/ 26 ноября 2011

Я получаю сообщение «Обнаружен недоступный код» в 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)));
        }

Где я иду не так?

Ответы [ 3 ]

2 голосов
/ 26 ноября 2011

, потому что в предыдущем блоке if-else вы обязательно вернетесь и откажетесь от своего метода, либо из if, либо из блока else.

так что ваш следующий код никогда не будет выполнен ни в коем случае.

1 голос
/ 26 ноября 2011

Предыдущий if имеет оператор return в обеих своих ветвях, поэтому ваша функция всегда будет возвращаться до достижения этой второй if.

0 голосов
/ 26 ноября 2011

Вот исправленный код

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

}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...