我正在为我的网站创建自己的搜索引擎。我设法获得了一些结果。但我只能从 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/