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

ASP.NET Core 6 MVC点击搜索按钮后如何保留文本框值

ASP.NET Core 6 MVC 搜索后保留表单输入值的解决方案

下面提供几种可行的解决方法,按需选择:

方法1:通过 ViewBag/ViewData 传递搜索参数

修改控制器代码

在返回视图前,将搜索参数存入ViewBag:

public ActionResult Index(string name, string email)
{
    var emp = _employeeRepository.GetEmployees();

    if (!string.IsNullOrEmpty(name))
    {
        emp = emp.Where(x => x.FName.ToLower().Contains(name.ToLower()) || x.LName.ToLower().Contains(name.ToLower())).ToList();
    }

    if (!string.IsNullOrEmpty(email))
    {
        emp = emp.Where(x => x.Email.Contains(email)).ToList();
    }

    // 传递搜索参数到视图
    ViewBag.SearchName = name;
    ViewBag.SearchEmail = email;

    return View(emp);
}

修改视图代码

给输入框添加value属性,绑定ViewBag中的值:

<form class="d-flex" asp-action="Index" asp-controller="Employee">
    <input name="name" class="form-control" type="search" placeholder="Name" aria-label="Search" value="@ViewBag.SearchName" />
    <input name="email" class="form-control" type="search" placeholder="Email" aria-label="Search" value="@ViewBag.SearchEmail" />
    <button class="btn btn-dark" type="submit">Search</button>
</form>

方法2:使用强类型视图模型(推荐)

这种方式更符合MVC的架构设计,便于维护和扩展。

创建视图模型类

public class EmployeeSearchViewModel
{
    public string Name { get; set; }
    public string Email { get; set; }
    public List<Employee> Employees { get; set; }
}

修改控制器代码

实例化视图模型并赋值,将其传递给视图:

public ActionResult Index(string name, string email)
{
    var emp = _employeeRepository.GetEmployees();

    if (!string.IsNullOrEmpty(name))
    {
        emp = emp.Where(x => x.FName.ToLower().Contains(name.ToLower()) || x.LName.ToLower().Contains(name.ToLower())).ToList();
    }

    if (!string.IsNullOrEmpty(email))
    {
        emp = emp.Where(x => x.Email.Contains(email)).ToList();
    }

    var viewModel = new EmployeeSearchViewModel
    {
        Name = name,
        Email = email,
        Employees = emp
    };

    return View(viewModel);
}

修改视图代码

指定视图模型,并绑定输入框的value:

@model EmployeeSearchViewModel

<form class="d-flex" asp-action="Index" asp-controller="Employee">
    <input name="name" class="form-control" type="search" placeholder="Name" aria-label="Search" value="@Model.Name" />
    <input name="email" class="form-control" type="search" placeholder="Email" aria-label="Search" value="@Model.Email" />
    <button class="btn btn-dark" type="submit">Search</button>
</form>

<!-- 渲染员工列表示例 -->
@foreach (var employee in Model.Employees)
{
    <div>@employee.FName @employee.LName - @employee.Email</div>
}

方法3:直接读取请求查询参数(快捷方式)

无需修改控制器,直接在视图中读取URL的查询字符串:

<form class="d-flex" asp-action="Index" asp-controller="Employee">
    <input name="name" class="form-control" type="search" placeholder="Name" aria-label="Search" value="@Request.Query["name"]" />
    <input name="email" class="form-control" type="search" placeholder="Email" aria-label="Search" value="@Request.Query["email"]" />
    <button class="btn btn-dark" type="submit">Search</button>
</form>

内容的提问来源于stack exchange,提问作者Rahul Aggarwal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 01:55:15