在MVC 5第2部分中按字符串搜索

时间:2017-04-24 19:53:22

标签: c# asp.net-mvc

这是一个后续问题,始于here

快速回顾一下这里发生了什么。我正在尝试按字符串值搜索对象列表,我从硬编码的链接列表中传递出来,如下所示:

@section SideBar{
<ul>        
    <li> @Html.ActionLink("Astronomy", "SearchMedia", new {searchString = "Astronomy" })</li>
    <li> @Html.ActionLink("World", "SearchMedia", new { searchString = "World" })</li>
    <li> @Html.ActionLink("Movies", "SearchMedia", new { searchString = "Movies" })</li>
</ul>
}

我将其传递给SearchMedia方法,如下所示:

public ActionResult SearchMedia(string searchString)
        {
            var result = db.Medias.ToList().Where(i => i.TagsEnum.ToString() == searchString);

            return View(result);
        }

尝试在我设置的SearchMedia视图中查看结果(将大部分HTML代码删除为简短并只留下几行):

@model IEnumerable<PhClub.Models.Media>
@foreach (var b in Model)
{ 
        <p>
            <h3> <a href=@Url.Action("Media", new { id = b.Id })>@b.title </a></h3>
            @b.description
        </p>
}

我创建了几个Media对象并按下现有TagsEnum值的链接。在呈现SearchMedia视图后,我根本没有得到任何结果。空白页。 .Where()是最好和最简单的方法,还是有其他选择?也许我的整个方法都是错误的,这是一种像我这样做的常见方式吗? 我在这里想念什么?请帮忙。

P.S。当我在SearchMedia视图中时,这就是我的地址栏的样子:

http://localhost:62220/Medias/SearchMedia?searchString=Astronomy

1 个答案:

答案 0 :(得分:0)

好的,我明白了。 整个方法是正确的。问题是我甚至没想到的地方。我的TagsEnum字段用俄语写成,因为我认为它不应该有任何区别,一旦搜索词和参数相互匹配,结果它确实有所作为,一旦我用英语更改了搜索词,它立即起作用。感谢大家的时间和关注。