You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 5 MVC无数据库场景下如何实现可用的搜索栏功能?

1 修改Razor视图添加搜索栏

在原有上传表单下方添加搜索表单,同时修正原有表单的methord拼写错误为method:

<!-- 原有上传表单 -->
<form method="post" enctype="multipart/form-data" asp-controller="Home" asp-action="Index">
    <input type="file" name="fifile" />
    <input type="submit" value="Upload" />
    <hr />
</form>

<!-- 新增搜索表单 -->
<form method="get" asp-controller="Home" asp-action="Index">
    <input type="text" name="searchKeyword" placeholder="输入文件名搜索" value="@ViewBag.SearchKeyword" />
    <input type="submit" value="搜索" />
    <hr />
</form>

<table class="table">
    <tr>
        <th>File Name</th>
    </tr>
    @foreach (var item in FileClass.Filename)
    {
        <tr>
            <td>@item.Name</td>
            <td><a href="@Url.Action("Download","Home",new { filename=item.Name })">Download</a></td>
            @if (User.IsInRole("Admin"))
            {
                <td><a href="@Url.Action("Delete", "Home", new { filedel = item.Name })">Delete</a></td>
            }
            <td><a href="/Home/DocumentViewer/@item.Name">Viewer</a></td>
        </tr>
    }
</table>

2 修改Home控制器的Index GET方法

新增搜索参数,实现文件筛选逻辑:

public IActionResult Index(string searchKeyword = null)
{
    var displayfc = Path.Combine(_iweb.WebRootPath, "Uploads");
    DirectoryInfo di = new DirectoryInfo(displayfc);
    List<FileInfo> fileinfo = di.GetFiles().ToList();
    
    // 搜索逻辑:关键词不为空时筛选文件名包含关键词的文件
    if (!string.IsNullOrEmpty(searchKeyword))
    {
        fileinfo = fileinfo.Where(f => f.Name.Contains(searchKeyword, StringComparison.OrdinalIgnoreCase)).ToList();
    }
    
    FileClass.Filename = fileinfo;
    ViewBag.SearchKeyword = searchKeyword; // 回显搜索关键词到视图
    return View();
}

3 路由配置说明

无需额外配置特殊路由,使用ASP.NET Core默认路由即可满足需求。
如果是.NET 6+版本,Program.cs中的默认路由配置如下:

var builder = WebApplication.CreateBuilder(args);
// 省略其他服务注册代码
builder.Services.AddControllersWithViews();

var app = builder.Build();
// 省略其他中间件配置代码
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

如果需要更友好的搜索路由(URL格式为/Home/Index/关键词),可以给Index GET方法加特性路由:

[HttpGet("Home/Index/{searchKeyword?}")]
public IActionResult Index(string searchKeyword = null)
{
    // 原有逻辑不变
}

内容的提问来源于stack exchange,提问作者Panait Rares Horia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:48:00