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
相关产品推荐
相关产品推荐

