Ajax 在控制器方法ASP.NET MVC 4/JSON中使用IDictionary

Ajax 在控制器方法ASP.NET MVC 4/JSON中使用IDictionary,ajax,json,asp.net-mvc-4,Ajax,Json,Asp.net Mvc 4,我正在尝试使用AJAX将数据发布回具有如下视图模型的ASP.NET MVC控制器: public class FunkyThingUpdateModel { public int FunkyThing_ID{get;set;} public string Name{get;set;} public IDictionary SizesAvailable{ get; set;} } 不幸的是,我正在努力使模型绑定器绑定到IDicational。 如果在传递给控制器的JSON中,s

我正在尝试使用AJAX将数据发布回具有如下视图模型的ASP.NET MVC控制器:

public class FunkyThingUpdateModel
{
   public int FunkyThing_ID{get;set;}
   public string Name{get;set;}
   public IDictionary SizesAvailable{ get; set;}
}
不幸的是,我正在努力使模型绑定器绑定到IDicational。 如果在传递给控制器的JSON中,
sizesAvailable
null
,则成功调用控制器方法。但是,如果有可用大小的数据,则会出现内部服务器错误500

我的JSON格式如下:

 {"FunkyThing_ID":1,"Name":"Pogo Stick","SizesAvailable":{"1":"Extra
 Large","2":"Extra Tiddly"}}
我不确定的是,我是否在尝试做一些不可能的事情。有没有一种绑定到IDictionary的方法?如果没有,最好的选择是什么

还是我的JSON只需要以不同的方式格式化

我在这里发现了许多类似的问题,但大多数都是很老的问题


似乎有一些迹象表明,这在我正在使用的MVC 4中是可能的,但我可能误解了上下文。

未测试,但我认为您必须为要创建的对象指定通用接口定义

public IDictionary<int, string> SizesAvailable{ get; set;}
编辑

如果您打算只获取大小的字符串数组(而不是字典),请更改

public string[] SizesAvailable{ get; set;}
并将数据作为

data: JSON.stringify({FunkyThing_ID:1, Name:"Pogo Stick", SizesAvailable:["Extra Large","Extra Tiddly"]}), 

希望这有帮助。

谢谢你的帮助。我在查字典,钥匙是身份证。非常感谢!
data: JSON.stringify({FunkyThing_ID:1, Name:"Pogo Stick", SizesAvailable:["Extra Large","Extra Tiddly"]}),