实现一个能够正常工作的搜索栏的关键是从MVC中的Views向Controllers进行传递搜索关键字,并从数据库中获取匹配的结果。以下是实现搜索栏的代码示例:
1.在MVC中创建一个SearchController:
public class SearchController : Controller { private readonly ApplicationDbContext _context;
public SearchController(ApplicationDbContext context)
{
_context = context;
}
public async Task Index(string searchString)
{
var products = from p in _context.Products
select p;
if (!String.IsNullOrEmpty(searchString))
{
products = products.Where(s => s.Name.Contains(searchString));
}
return View(await products.ToListAsync());
}
}
2.在Views文件夹下创建一个Search文件夹,并在其中创建一个Index.cshtml页面:
@model IEnumerable
@{ ViewData["Title"] = "Search"; }
@Html.DisplayNameFor(model => model.Name) | @Html.DisplayNameFor(model => model.Price) |
---|---|
@Html.DisplayFor(modelItem => item.Name) | @Html.DisplayFor(modelItem => item.Price) |
3.在Startup.cs文件中注册DbContext:
public class Startup { public IConfiguration Configuration { get; }
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext(options =>
options.UseSqlServer