使用@ Html.DropDownListFor进行数据绑定异常

时间:2018-04-30 15:51:50

标签: c# asp.net-mvc

我无法将值绑定到下拉列表。

模型

public class DummyModel
{
    ...
    public int? OptionID { get; set; }
    ...
}

行视图导致例外

@Html.DropDownListFor(model => model.OptionID, new SelectList(ViewBag.AvailableOptions, "ID", "Name"))

ViewBag的内容

?ViewBag.AvailableOptions
Count = 4
    [0]: {[3, Average Speed]}
    [1]: {[4, Snails pace]}
    [2]: {[1, Super Fast]}
    [3]: {[2, Super Slow]}

生成的异常:

  

System.Web.HttpException:' DataBinding:' System.Collections.Generic.KeyValuePair`2 [[System.Int32,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089] ,[System.String,mscorlib,Version = 4.0.0.0,Culture = neutral,

1 个答案:

答案 0 :(得分:1)

如果(如评论中/异常文本中所述),ViewBag.AvailableOptions是一个字典,您需要更改选择列表的Id和Value属性,如下所示:

new SelectList(ViewBag.AvailableOptions, "Key", "Value")

由于字典在枚举时基本上是KeyValuePair个对象的列表,因此其属性(可以想象)KeyValue