下拉列表中的重复值 - MVC
Posted
技术标签:
【中文标题】下拉列表中的重复值 - MVC【英文标题】:Repeating Values in Dropdown List- MVC 【发布时间】:2021-12-13 01:53:55 【问题描述】:我正在处理一个需要从数据库创建下拉列表的项目。下拉列表包括供应商所在的州。但是,下拉列表返回重复值。目的是使用下拉菜单按供应商所在的州过滤供应商。
控制器:
public ActionResult Index()
ViewBag.State = new SelectList
(db.Vendors
.OrderBy(v => v.State)
.Distinct(),
"State", "State");
return View(db.Vendors.ToList());
查看:
@html.DropDownList("State", null, "Select State", htmlAttributes: new @class = "nav-link active", @onchange = "FillByState()" )
我已经尝试过我在这里找到的其他似乎有类似问题的解决方案。
我在控制器中尝试过这个:
public ActionResult Index()
ViewBag.State = new SelectList
(db.Vendors
.Select(v => v.State)
.Distinct(),
"State", "State");
return View(db.Vendors.ToList());
但这又引发了以下异常:
异常详细信息:System.Web.HttpException:DataBinding:“System.String”不包含名为“State”的属性。
在这一点上,我正在摸索我能做什么。
TLDR:
我正在尝试创建唯一值(状态)的下拉列表。但是,到目前为止,我尝试过的不是创建一个出现多次的状态下拉列表,就是引发异常。
【问题讨论】:
【参考方案1】:您在正确的轨道上,但是一旦您选择了状态名称(并使用 Distinct 减少了它),您不再需要在 SelectList 构造函数中指定数据值和数据文本字段的名称。字符串本身将充当两者。不过,您可能仍然想要一个排序列表。
试试
public ActionResult Index()
ViewBag.State = new SelectList
(db.Vendors
.Select(v => v.State)
.Distinct()
.OrderBy(s => s));
return View(db.Vendors.ToList());
【讨论】:
做到了!谢谢!以上是关于下拉列表中的重复值 - MVC的主要内容,如果未能解决你的问题,请参考以下文章