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

ASP.NET MVC中如何用C#实现下拉列表项按MainAccountID分组

实现分组下拉列表的步骤

1. 补充模型字段

首先确保你的Account模型包含用于分组的MainAccountID字段(对应数据表中的分组标识):

[Key]
public int ID { get; set; }

[Required]
public string AccountName { get; set; }

public string Description { get; set; }

public int? CurrentAccountID { get; set; }

// 新增分组标识字段,与数据表对应
public int MainAccountID { get; set; }

2. 控制器构造带分组的数据源

修改控制器中ViewBag的赋值逻辑,将数据按MainAccountID分组并构造带分组的下拉选项集合:

// 获取过滤后的有效账户数据
var validAccounts = db.Accounts.Where(x => x.Status == true && x.CompanyID == CompanyID).ToList();

// 定义分组ID与分组名称的映射(根据你的业务实际调整)
var groupNameMap = new Dictionary<int, string>
{
    { 1, "收入" }, // 对应银行、信用卡等收入类账户
    { 2, "支出" }  // 对应办公支出、其他支出等支出类账户
};

// 构造带分组的SelectListItem集合
var groupedAccountItems = new List<SelectListItem>();
foreach (var accountGroup in validAccounts.GroupBy(a => a.MainAccountID))
{
    // 创建分组对象
    var accountGroupItem = new SelectListGroup { Name = groupNameMap[accountGroup.Key] };
    
    // 为当前分组添加所有账户选项
    foreach (var account in accountGroup)
    {
        groupedAccountItems.Add(new SelectListItem
        {
            Value = account.ID.ToString(),
            Text = account.AccountName,
            Group = accountGroupItem
        });
    }
}

// 将分组后的集合存入ViewBag
ViewBag.CurrentAccountID = groupedAccountItems;

3. 视图渲染分组下拉列表

保留原有视图代码,仅需确保ViewBag的数据源是带分组的IEnumerable<SelectListItem>集合(强制转换避免类型问题):

<div class="col-sm-8"> 
    @Html.DropDownList("CurrentAccountID", (IEnumerable<SelectListItem>)ViewBag.CurrentAccountID, "--Select Account Type--", htmlAttributes: new { @class = "form-select acctype", @Id = "AccountTypes", @required = true, oninvalid = "this.setCustomValidity('Please Select the Account Type')", oninput = "this.setCustomValidity('')" })
</div>

关键说明

  • 确保数据表中MainAccountID的值与控制器中groupNameMap的映射完全匹配(比如银行账户的MainAccountID为1,对应"收入"分组)
  • 如果你的数据表中直接存储了分组名称(而非ID),可直接用分组名称作为分组依据,无需groupNameMap映射

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 16:20:14