【发布时间】:2018-09-04 22:13:03
【问题描述】:
我有一个作为网络书店的项目。我已经实现了一个搜索,目前只按作者搜索书籍。我想做的是启用按作者/标题/其他内容进行搜索。
我对我认为这如何工作有一个大致的想法,但我遗漏了一些部分,这就是我在这里寻求建议的原因。
以下是我认为可能是个好方法:
在视图中有一个下拉选择器,我可以在其中指定按作者/书名搜索
这将从视图传递到控制器,我将能够通过传入的值(作者/书名)进行搜索。
我想知道如何实现我的方法,并讨论 不同的想法也可能奏效。感谢您的宝贵时间。
下面是控制器中的代码,它返回我搜索的作者的书籍,非常简单。
public IActionResult Index(string searchString)
{
bool hasSearchResults = false;
var model = _bookstoreData.GetAll();
if (!string.IsNullOrEmpty(searchString))
{
model = model.Where(s => s.Author.Contains(searchString));
hasSearchResults = true;
}
return hasSearchResults ? View("SearchResult", model) : View(model);
}
这是匹配的视图:
<form asp-controller="Home" asp-action="Index">
<div class="container searchBar">
<div class="container searchBar">
<input type="text" name="searchString" class="form-control" placeholder="Search books by title, author...">
<input type="hidden" />
</div>
</div>
</form>
【问题讨论】:
-
尝试使用 IF 语句并为作者和标题添加两个检查
model = model.Where(s => s.Title.Contains(searchString));您可以通过使用循环或 switch 语句很容易地检查一本书的许多不同内容。如果您将作者和标题都输入到同一个搜索框中,那么您需要使用一些智能逻辑并首先找到匹配作者的所有书籍(通过对搜索字段中的所有单词进行部分字符串匹配),然后再按标题匹配所有作者的书(也是部分字符串匹配)。