2015-03-07 2 views
0

У меня есть этот метод поиска, созданный на «MusicController»:Метод поиска не работает ввиду

public ActionResult Search(string search) 
     { 
      var musicas = from m in db.Musicas select m; 

      if (!String.IsNullOrEmpty(search)) 
      { 
       musicas = musicas.Where(s => s.Nome.Contains(search)); 
       // return RedirectToAction("Search"); //name of view that will return the data 
      } 
      return View(musicas); 
     } 

Этот метод вызывается в моей _Layout.cshtml:

 @using (Html.BeginForm("Search", "Music",null, FormMethod.Post, new {@class ="navbar-form navbar-left" , role="search"})) 
{ 
     <div class="form-group"> 
      @Html.TextBox("search") 
     </div> 
     button type="submit" class="btn btn-default" value="search">Submit</button> 
} 

Таким образом, когда пользователь положил значение в TextBox и нажмите на кнопку отправить, перенаправляются на эту точку зрения:

@model IEnumerable<TestTcc2.Models.Musica> 

@{ 
    ViewBag.Title = "Search"; 
    Layout = "~/Views/Shared/_LayoutOuvinte.cshtml"; 
} 
<h2>Search</h2> 
<table> 
     <tr> 
     <th> 
      <span>Genero</span> 
     </th> 

     <th> 
      <span>Nome</span> 
     </th> 
     <th> 
      <span>Artista</span> 
     </th> 
     <th> 
      <span>Preço</span> 
     </th> 
     <th></th> 
    </tr> 
@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.genero.Nome) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Nome) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.NomeArtista) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Preco) 
     </td> 
     <td> 
      @Html.ActionLink("Play", "", new { path = item.path }) | 
     </td> 
    </tr> 
} 
</table> 

на этой точке зрения, пользователь должен видеть результат метода поиска, я думаю, что мне нужно поставить if, если после: «if (item.Nome ==« searchResult »)», но я не знаю, что является лучшим способом поместить результат метода поиска В таблице.

Кто-нибудь может мне помочь? В принципе, мне нужно вернуть результат метода поиска в таблице в окне «Поиск».

+0

Какая у вас проблема? Вызывается ли исключение? Не возвращает ли вы ожидаемые результаты? (вам не нужно 'if (item.Nome ==" searchResult ")') –

ответ

0

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

Debug ваш контроллер и поместить контрольную точку на линии:

return View(musicas); 

проверить, что в musicas, являются дочерние элементы там и судоходным? Вы использовали:

@Html.DisplayFor(modelItem => item.genero.Nome) 

Если дочерний элемент genero недоступен, вы получите сообщение об ошибке.

Кроме того, это db.Musicas так же, как:

IEnumerable<TestTcc2.Models.Musica> 

Это одна вещь, чтобы получить данные из базы данных/наборов данных и т.д., но она должна быть в той же самой структуре модели, используемой на этой странице.