c# - 下拉列表中的重复值 - MVC
问题描述
我正在做一个需要从数据库创建下拉列表的项目。下拉列表包括供应商所在的州。但是,下拉列表返回重复值。目的是使用下拉菜单按供应商所在的州过滤供应商。
控制器:
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:
我正在尝试创建唯一值(状态)的下拉列表。但是,到目前为止,我尝试过的不是创建一个出现多次的状态下拉列表,就是引发异常。
解决方案
您走在正确的轨道上,但是一旦您选择了状态名称(并使用 Distinct 减少了它),您就不再需要在 SelectList 构造函数中指定数据值和数据文本字段的名称。字符串本身将充当两者。不过,您可能仍然想要一个排序列表。
尝试
public ActionResult Index()
{
ViewBag.State = new SelectList
(db.Vendors
.Select(v => v.State)
.Distinct()
.OrderBy(s => s));
return View(db.Vendors.ToList());
}
推荐阅读
- reactjs - 测试从钩子返回的值,该值由 firebase auth listener 设置
- c# - 如何混淆本地存储的用户/密码以发送到第 3 方应用程序?
- linux - 为什么我需要在“git clone..”之后进行“pip install”?
- javascript - React hooks - 从数组中删除多个对象并更新状态
- apache - Apache 代理 modsecurity 阻止 Maven 部署操作
- javascript - 即使在 manifest.json 中进行更改后,Chrome 应用内容安全策略也不允许运行 eval()
- python - 无法检测到 div 的单选按钮 不产生输出 只能检测到主单选按钮
- python - 分组正则表达式以匹配直到单词边界
- angular - Angular 9 构建包目录
- laravel - 将 laravel 调用到 chamilo(lms) 的肥皂错误