字典键和选择列表的值
Dictionary dict = new Dictionary(); dict.add("a1", "Car"); dict.add("a2", "Van"); dict.add("a3", "Bus");
SelectList SelectList = new SelectList((IEnumerable)mylist, "ID", "Name", selectedValue);
在上面的代码中,我将列表mylist
放入SelectList
。 ID
和Name
是该特定对象list(mylist)
两个属性。
同样,我需要将Dictionary添加到SelectList.
需要将字典的键添加到data Value
参数 – (上面示例的ID
位置)需要将字典的值添加到data text
参数 – (上例的Name
位置)
所以请告诉我一种使用这个字典键和值创建选择列表而不创建新类的方法。
你可以尝试:
SelectList SelectList = new SelectList((IEnumerable)dict, "Key", "Value", selectedValue);
Dictionary
实现IEnumerable
, KeyValuePair
为您提供Key
和Value
属性。
但请注意,枚举Dictionary
返回的项的顺序不能保证。 如果您想要保证订单,您可以执行以下操作:
SelectList SelectList = new SelectList(dict.OrderBy(x => x.Value), "Key", "Value", selectedValue);
您真正需要做的就是将字典作为参数传递并使用重载:
public SelectList(IEnumerable items, string dataValueField, string dataTextField);
例:
var dictionary = new Dictionary { {"a1", "Car"}, {"a2", "Van"}, {"a3", "Bus"} }; var selectList = new SelectList(dictionary, "Key", "Value");
我知道这篇文章有点陈旧,但我来到这里找到了答案,并根据之前给出的答案得出了这个结论。
您可以从Dictionary中构造一个SelectListItem对象列表,然后从中创建一个SelectList。
var dict = new Dictionary { {"a1", "Car"}, {"a2", "Van"}, {"a3", "Bus"} }; var myListItems = new List(); myListItems.AddRange(dict.Select(keyValuePair => new SelectListItem() { Value = keyValuePair.Key, Text = keyValuePair.Value })); var myList = new SelectList(myListItems);
我喜欢这样写:
@Html.DropDownListFor(model => model.Delimiter, new Dictionary { {",", ", (Comma)"}, { ";", "; (Semicolon)"} }.Select(x => new SelectListItem {Value = x.Key, Text = x.Value}))
因为这样,您不必依赖字符串"Key"
和"Value"
。
尝试
SelectList SelectList = new SelectList((IEnumerable)mylist, "Key", "Value", selectedValue);
- Html.RenderPartial上的MVC System.Web.HttpCompileException
- 是否可以在一个ASP.NET MVC应用程序中同时具有Azure AD和个人帐户身份validation?
- 使用json传递关联数组:在控制器中期望哪种类型?
- 解决单身人士的Autofac会造成瓶颈
- 如何在我的自定义表而不是aspnet用户中使用哈希密码保存新记录?
- 我们可以使用代码优先迁移来运行SQL脚本吗?
- 使用ASP.NET和MVC 3,如何创建隐藏字段,以便具有数组的List作为列表中每个项的值正确绑定?
- 在ASP.Net Identity 2.0上包含属性UserManager.Users.ToListAsync和UserManager.FindByIdAsync
- ASP.NET 5 / MVC 6控制台托管应用程序