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

如何在ASP.NET MVC的Index方法中传递布尔筛选参数

实现按删除状态过滤学生列表的修改方案

1. 修改StudentsController的Index方法

添加可空布尔类型参数接收过滤值,补充过滤逻辑,传递参数到视图并修正原代码笔误:

public ActionResult Index(string sortOrder, string searchString, bool? isFeaturedFilter)
{
    var students = from m in db.Students select m;

    // 排序逻辑
    ViewData["NameSortParm"] = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
    switch (sortOrder)
    {
        case "name_desc":
            students = students.OrderByDescending(s => s.StudentLName);
            break;
        default:
            students = students.OrderBy(s => s.StudentFName);
            break;
    }

    // 搜索逻辑
    if (!String.IsNullOrEmpty(searchString))
    {
        students = students.Where(s => s.StudentLName == searchString
                                        || s.StudentFName.Contains(searchString));
    }

    // 新增删除状态过滤逻辑
    if (isFeaturedFilter.HasValue)
    {
        students = students.Where(s => s.IsFeatured == isFeaturedFilter.Value);
    }

    // 传递当前参数到视图,保留状态并用于按钮高亮
    ViewBag.CurrentSearch = searchString;
    ViewBag.CurrentSort = sortOrder;
    ViewBag.IsFeaturedFilter = isFeaturedFilter;

    return View(students);
}

2. 修改Index.cshtml的按钮逻辑

点击按钮时带上现有搜索和排序参数,避免状态丢失:

<div class="btn-group" role="group" aria-label="Filter by IsFeatured">
    <button type="button" class="btn btn-primary @((ViewBag.IsFeaturedFilter == null) ? "active" : "")"
            onclick="location.href='@Url.Action("Index", "Students", new { sortOrder = ViewBag.CurrentSort, searchString = ViewBag.CurrentSearch })'">
        All
    </button>
    <button type="button" class="btn btn-primary @((ViewBag.IsFeaturedFilter == true) ? "active" : "")"
            onclick="location.href='@Url.Action("Index", "Students", new { sortOrder = ViewBag.CurrentSort, searchString = ViewBag.CurrentSearch, isFeaturedFilter = true })'">
        Deleted
    </button>
    <button type="button" class="btn btn-primary @((ViewBag.IsFeaturedFilter == false) ? "active" : "")"
            onclick="location.href='@Url.Action("Index", "Students", new { sortOrder = ViewBag.CurrentSort, searchString = ViewBag.CurrentSearch, isFeaturedFilter = false })'">
        Not Deleted
    </button>
</div>

关键说明

  • 使用bool?(可空布尔类型)接收isFeaturedFilter参数,支持null(All)、true(Deleted)、false(Not Deleted)三种过滤状态
  • 按钮跳转时携带sortOrder和searchString参数,确保用户之前的搜索和排序状态不会被重置
  • 修正原控制器代码中的笔误:将subjects替换为students,否则排序逻辑会抛出异常
  • 通过ViewBag.IsFeaturedFilter控制按钮的active类显示,标记当前选中的过滤状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:17:16