访问 dataTextField 时选择列表失败

selectlist fails when accessing dataTextField

我正在尝试为以下列表创建下拉列表 class:

public class PrimulaPositionViewModel
{
    public long Id { get; set; }
    public Dictionary<string, string> Name { get; set; }
}

在我的 cshtml 视图中,我这样调用下拉列表:

@Html.DropDownList("Position", new SelectList(Model.Positions, "Id", "Name['sv']", 
guise.PrimulaPositionId))

我的问题是 "Name['sv']" 没有获取字典中保存的值,而是使程序抛出错误。如果我只写 Name 那么我会得到一个错误,但是下拉列表只是输出 system.gen...... 来代表字典。

所以我想知道在视图中创建 SelectList 时如何访问 Name["sv"] 值。

我们通常把propertyName作为dataTextField放在SelectListItem中。 如果你想使用字典,你可以使用<select></select>,并将Id和Name['sv']放入foreach的选项中:

<select>
        @foreach (var item in Model.Positions)
        {
            if (item.Id == guise.PrimulaPositionId)
            {
                <option id="@item.Id" selected>@item.Name["sv"]</option>
            }
            else
            {
                <option id="@item.Id">@item.Name["sv"]</option>
            }

        }
    </select>