【发布时间】:2018-11-19 12:16:09
【问题描述】:
我在 ASP.NET 中使用 Json.NET 序列化了 MultiSelectList(启用了 TypeNameHandling),结果如下:
"MyMultiSelectList": {
"$type": "System.Web.Mvc.MultiSelectList, System.Web.Mvc",
"$values": [
{
"Disabled": false,
"Selected": true,
"Text": "Text1",
"Value": "Value1"
},
{
"Disabled": false,
"Selected": false,
"Text": "Text2",
"Value": "Value2"
},
{
"Disabled": false,
"Selected": false,
"Text": "Text3",
"Value": "Value3"
}
]
}
当使用this method 将此 Json 反序列化回 MultiSelectList 而没有任何自定义转换器时,我得到一个带有 3 个 SelectListItems 的 MultiSelectList,其中它们的 Text 属性设置为“System.Web.Mvc.SelectListItem”并且它们的 Value 属性为空。
首先,我假设 Json.NET 无法正确反序列化 SelectListItems,所以我为 SelectListItem 类型创建了一个Custom JsonConverter。我的转换器正确创建了 SelectListItems,但结果仍然相同。
然后我尝试为 MultiSelectList 类型制作一个自定义转换器,但 Json.NET 从未调用该代码。
也许这个问题与 MultiSelectList 没有默认的空构造函数有关,但我没有办法尝试。
【问题讨论】:
标签: asp.net json json.net selectlist selectlistitem