【问题标题】:MVC: Search by name of the videoMVC:按视频名称搜索
【发布时间】:2017-12-07 18:36:53
【问题描述】:

您好,我有一个问题如何改进我的代码,以便通过在文本框中输入至少一个字母而不是所有标题来搜索我的数据库。现在它正在搜索,但我需要输入整个标题来搜索。

我的搜索栏:

@using (Html.BeginForm("SearchVideo", "Video", FormMethod.Post, new { @class = "navbar-form navbar-left", @role = "search" }))
                    {
                        <div class="form-group">
                            @Html.TextBox("searchVideo", (object)null, new { @class = "form-control", @placeholder = "Wyszukaj film" })
                        </div>
                        <button class="btn btn-default" type="submit"><i class="glyphicon glyphicon-search"></i></button>
                    }

我的 VideoListViewModel:

public class VideoListViewModel
{
    public IEnumerable<Video> VideoList { get; set; }
}

我的搜索视图:

    <div class="list-group">
        @foreach (var video in Model.VideoList)
        {
            <a href="/Video/GetVideo?id=@video.Id" class="list-group-item clearfix">
                <img src="~/Images/@video.ImageUrl" style="width: 80px; height: 100px; padding: 5px;" />
                Premiere: @video.Date
                <br/>
            </a>
            <br/>
        }
    </div>

【问题讨论】:

  • 到底是什么问题?
  • 我需要输入整个标题来搜索而不是标题的一部分。
  • 您希望能够搜索标题片段?
  • 是的,因为不是每个人都知道电影的完整名称。所以这可能是一个小小的便利
  • 查看这个LIKE query 问题。

标签: c# asp.net-mvc database


【解决方案1】:

您可以在 where 子句中使用 Contains 方法

return db.Video.Where(x => x.VideoName.Contains(search));

当一个字符串存在于另一个字符串anywhere时,

Contains 方法返回true。如果要获取 VideoName 以搜索参数值开头的记录,可以使用StartsWith 方法。

return db.Video.Where(x => x.VideoName.StartsWith(search));

【讨论】:

    猜你喜欢
    • 2014-10-13
    • 2018-09-26
    • 2020-10-24
    • 2020-05-05
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    相关资源
    最近更新 更多