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

ASP.NET MVC双多选列表运行时合并显示问题求助

问题解决:多选列表内容混同显示

问题根源

你的控制器代码存在一个关键错误:构建联系人组(ContactGroup)选项列表时,误将组的选项添加到了员工列表的items集合中,而非专门用于组的ims集合。这导致员工多选列表包含了所有员工和联系人组的选项,联系人组的列表则为空,视觉上看起来像是两个列表的内容都显示在了同一个文本框里。

修正后的控制器代码

// GET: DistributionLists/Create
public ActionResult Create()
{   
    // 构建员工详情选项列表
    var contact = db.Contact;
    List<SelectListItem> items = new List<SelectListItem>();
    foreach (var item in contact)
    {
        items.Add(new SelectListItem
        {
            Value = item.EmployeeId.ToString(),
            Text = item.EmployeeName.ToString(),
        });
    };
    ViewBag.Contacts = items;

    // 构建联系人组详情选项列表
    var cg = db.ContactGroup;
    List<SelectListItem> ims = new List<SelectListItem>();
    foreach (var im in cg)
    {
        // 修正:将组选项添加到专属集合ims中
        ims.Add(new SelectListItem
        {
            Value = im.ContactGroupID.ToString(),
            Text = im.ContactGroupName.ToString(),
        });
    };
    ViewBag.cg = ims;
    return View();
}

视图代码说明

你的视图代码本身无逻辑问题,若想优化模型绑定,可以将第一个DropDownList的第一个参数改为模型字段名EmployeeId,让绑定更规范:

<div class="form-group">
    @Html.LabelFor(model => model.EmployeeId, "EmployeeName", htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.DropDownList("EmployeeId", ViewBag.Contacts as List<SelectListItem>, new { @class = "form-control", multiple = "multiple" })
        @Html.ValidationMessageFor(model => model.EmployeeId, "", new { @class = "text-danger" })
    </div>
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:45:32