【问题标题】:C# dictionary keys to array数组的 C# 字典键
【发布时间】:2018-05-25 15:15:07
【问题描述】:

我有一个下拉列表,可以让我选择多个项目。我正在使用字典列表来显示项目。因此,为了选择多个项目,我需要将字典列表转换为数组。这是它的样子:

public static Dictionary<string, string> DropdownItem = new Dictionary<string, string>()
    {
        { "", "" },
        { "1", "item1" },
        { "2", "item2" },
        { "3", "item3" },
        { "4", "item4" },
        { "5", "item5" },
    };

       <div class="form-group">
            <label asp-for="DropdownItem" class="control-label" multiple></label>
            <span asp-validation-for="DropdownItem" class="text-danger"></span>
            <select asp-for="DropdownItem" class="form-control">
                <option value="" disabled="disabled" selected="selected">drop down</option>
                <option value="1">item1</option>
                <option value="2">item2</option>
                <option value="3">item3</option>
                <option value="4">item4</option>
                <option value="5">item5</option>
            </select>
        </div>

这是我将其转换为数组后的样子:

public static Dictionary<string, string[]> DropdownItem = new Dictionary<string, string[]>()
    {
        { "", "" },
        { "1", "item1" },
        { "2", "item2" },
        { "3", "item3" },
        { "4", "item4" },
        { "5", "item5" },
    };

这是正确的吗?

【问题讨论】:

  • “之前”和“之后”是相同的。另外,“正确”是什么意思?
  • 您在第二个中的值是一个字符串数组,但您传递的只是普通字符串。
  • 此外,此代码甚至不会编译您的字典类型为 并且您正在使用 填充它
  • 是的,我完全不知道你在问什么。当你有一个IEnumerable&lt;&gt; 的东西时,使用 Select Tag 助手是微不足道的。 See this answer,您的字典是 IEnumerable&lt;KeyValuePair&lt;TKey, TValue&gt;&gt;,所以只需创建键/值:KeyValue
  • 感谢您的回复。我应该如何处理这个?正确的方法是什么?

标签: c# asp.net arrays dictionary


【解决方案1】:

看起来你正在使用Tag Helpers,所以你应该能够做到:

/*
    This assumes that you have your Dictionary<string, string> DropdownItem 
    in your @model 
*/
<select asp-for="DropdownItem" 
        asp-items="@(new SelectList(Model.DropdownItem,"Value","Key"))">
    <option>Please select one</option>
</select>

没有必要也没有理由将您的Dictionary&lt;string, string&gt; 变成Dictionary&lt;string, string[]&gt;

【讨论】:

  • @maccetura。我真的很感谢你的例子。我将点击该链接并了解更多信息。最好的问候!
猜你喜欢
  • 1970-01-01
  • 2010-10-31
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 2014-12-10
  • 1970-01-01
  • 2012-03-07
  • 1970-01-01
相关资源
最近更新 更多