c# - 如何在 MVC 中实现所有 sql 表的搜索功能?

标签 c# jquery mysql asp.net-mvc entity-framework

我正在为我的网站创建自己的搜索引擎。我设法获得了一些结果。但我只能从 SQL 表中获取数据。

现在 HTML 表单如下所示:

 <form action="@Url.Action("SearchResult","Home")" method="get" class="search-form">
 <input id="searchNm" type="search" placeholder="Search..." class="search-field" name="SearchText" value="">
     <button type="submit" class="search-submit">
             <span class="search-icon">Search</span>
    </button>

Controller :

LawyerDB context = new LawyerDB();
public ActionResult SearchResult(string SearchText)
{
    return View(context.Articles.Where(x=>x.ArticleContent.Contains(SearchText) ||x.Headline.Contains(SearchText) || SearchText==null).ToList());
}

搜索结果:

@model IEnumerable<Law.Data.Model.Category>
@foreach(var item in Model){
    <article class="col-sm-12">
        <a href="@Url.Action("BlogDetails","Home",new { id=item.ArticleId})">
            <img class="img-responsive" src="@item.ArticlePhoto">
       </a>
            <div class="blockContent">
                <div class="blockTop">
                    <a href="@Url.Action("BlogDetails","Home",new { id=item.ArticleId})" class="layout-tittle" style="width:80%;" >@item.Headline</a>
                </div>
                <p class=" text-muted"><em><i class="glyphicon glyphicon-time fa-fw"></i>@String.Format("{0:MMMM dd, yyyy}", item.CreateDate) <span class="col-sm-offset-1"><i class="fa fa-comments-o" aria-hidden="true"></i>@item.Comments.Count()</span></em></p>
                <hr>
                @if (item.ArticleContent.Length > 150)
                {
                    <p>
                        <em>
                            @Html.Raw(item.ArticleContent.Substring(0, 150))
                        </em>
                    </p>
                }
                else
                {
                    <p>
                        <em>
                            @Html.Raw(item.ArticleContent)...
                        </em>
                    </p>

                }
                <div class="clearfix"></div>
                <a class="read-more" href="@Url.Action("BlogDetails","Home",new { id=item.ArticleId})">Read More<i class="fa fa-long-arrow-right" aria-hidden="true"></i></a>
                <hr>
            </div>

}

目前我只能对article表执行此操作。有没有好的方法对所有sql表执行此操作?

我的sql表:

 public virtual DbSet<Article> Articles { get; set; }
public virtual DbSet<Authority> Authorities { get; set; }
public virtual DbSet<Category> Categories { get; set; }
public virtual DbSet<Comment> Comments { get; set;}
public virtual DbSet<Employee> Employees { get; set; }
public virtual DbSet<Label> Labels { get; set; }
public virtual DbSet<User> Users { get; set; }
public virtual DbSet<SiteContent> SiteContents { get; set; }

最佳答案

如果您使用 SQL Server,我建议您查看全文索引功能。它会比简单的 .Contains 子句做更多的事情,这只会显示完全匹配。您需要做更多的工作来创建存储过程。我不建议尝试从原始用户输入构建 SQL 语句,除非您希望 Little Bobby Tables 加入。

关于c# - 如何在 MVC 中实现所有 sql 表的搜索功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46498160/

相关文章:

javascript - Angularjs - 取消选中复选框时如何返回到之前的状态

mysql - 无法从我的 java 应用程序访问 mysql 数据库(在 AWS 实例上运行)

mysql - 如何从多个 MySQL 表中获取信息?

C# 亚毫秒计时

c# - SQL 2000 的 NHibernate 变量限制

javascript - 带有两个按钮的 ListView 行设置属性div

javascript - Jquery Accordion 类型功能一次只能打开一个元素

c# - 为 SQLite 编写验证层的最佳方法是什么

c# - ReactiveUI - 查看定位器性能

python - 我怎样才能得到真正的光标或更新它或重置它?