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

.NET Core 6 MVC下拉菜单选择无法过滤数据问题咨询

问题解决方案

核心问题根源

你遇到的问题本质是三个环节的疏漏:ViewModel未保留选中的下拉值、查询逻辑未正确应用筛选参数、视图下拉框未绑定选中状态。

具体修改步骤

1. 修正控制器Action的逻辑与ViewModel赋值

在Index方法中,必须将选中的筛选参数回写进ViewModel,同时基于参数过滤数据:

public IActionResult Index(string String02NameSelected)
{
    var viewModel = new YourViewModel();
    // 保留选中的下拉值,默认设为"All"
    viewModel.String02NameSelected = String02NameSelected ?? "All";

    // 构建带过滤的查询
    var dataQuery = _context.YourModel.AsQueryable();
    if (!string.IsNullOrEmpty(viewModel.String02NameSelected) && viewModel.String02NameSelected != "All")
    {
        dataQuery = dataQuery.Where(m => m.String02Name == viewModel.String02NameSelected);
    }
    viewModel.YourDataList = dataQuery.ToList();

    // 生成下拉选项列表(从数据中取不重复值)
    viewModel.String02Options = _context.YourModel
        .Select(m => m.String02Name)
        .Distinct()
        .OrderBy(n => n)
        .ToList();

    return View(viewModel);
}

2. 视图中绑定下拉框的选中状态

用Tag Helper或手动判断的方式,确保回传后下拉框显示选中的选项:

方式一:使用ASP.NET Core Tag Helper(推荐)

<select asp-for="String02NameSelected" asp-items="@(new SelectList(Model.String02Options))">
    <option value="All">All</option>
</select>

方式二:手动判断选中状态

<select name="String02NameSelected">
    <option value="All" @(Model.String02NameSelected == "All" ? "selected" : "")>All</option>
    @foreach (var option in Model.String02Options)
    {
        <option value="@option" @(Model.String02NameSelected == option ? "selected" : "")>@option</option>
    }
</select>

3. 确认ViewModel的字段完整性

确保ViewModel包含必要的三个字段:

public class YourViewModel
{
    // 存储选中的下拉值
    public string String02NameSelected { get; set; }
    // 下拉选项列表
    public List<string> String02Options { get; set; }
    // 展示的过滤后数据
    public List<YourModel> YourDataList { get; set; }
}

额外注意事项

  • 若使用POST提交表单,建议采用PRG模式(POST-REDIRECT-GET),提交后重定向到带筛选参数的GET请求,避免刷新页面重复提交。
  • 检查过滤逻辑中的字段名,确保与Model中的字段完全匹配(比如不要将String02Name误写为String02)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:01:39