我在" 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&#34; if(item.Nome ==&#34; searchResult&#34;)& #34;,但我不知道将搜索方法的结果放在桌面上的最佳方法是什么。
有人可以帮帮我吗?基本上,我需要在搜索视图的表格中返回搜索方法的结果。答案 0 :(得分:0)
没有看到您的模型类和相关项目,我只能建议您查看返回到视图的内容。
调试您的Controller并在该行上放置一个断点:
return View(musicas);
检查音乐中的内容,那里的子项目是否可导航?您使用过:
@Html.DisplayFor(modelItem => item.genero.Nome)
如果genero子项目不可用,您将收到错误。
此外,db.Musicas与:
相同IEnumerable<TestTcc2.Models.Musica>
从数据库/数据集等获取数据是一回事,但它需要与页面上使用的模型结构相同。