【问题标题】:Data Binding Exception With @Html.DropDownListFor@Html.DropDownListFor 的数据绑定异常
【发布时间】:2018-04-30 15:51:49
【问题描述】:

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

型号

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

Line In View 导致异常

@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,版本=4.0.0.0,文化=中性,

【问题讨论】:

  • 请添加操作代码,以便我们看到您分配给ViewBag.AvailableOptions的内容
  • ViewBag.AvailableOptions 是什么类型?
  • 类型似乎是字典。

标签: c# asp.net-mvc


【解决方案1】:

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

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

由于字典在枚举时基本上是KeyValuePair 对象的列表,因此它的属性(正如人们可以想象的那样)是KeyValue

【讨论】:

  • 谢谢弗朗西斯!这符合我的预期。
猜你喜欢
  • 2020-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
相关资源
最近更新 更多