我有一个发布这些值的表单:
调查[0] .Key 75
调查[0] .Value 4
调查[1]。关键76
调查[1] .Value 4
我试图使用默认模型绑定器将其映射到字典类型:
[HttpPost]
public ActionResult CompleteSurvey(Dictionary<int, int> answers)
{
...
}
但是我得到InvalidCastException:指定的强制转换无效。
为什么?
答案 0 :(得分:1)
我只是在这里猜测,但我认为这是因为你的论点被称为'答案'而不是'调查'。您应该通过查看易于在firebug或chrome中执行的帖子标题来查看发布到您的方法的内容。当你检查“通过网络传输”的内容时,它会更有意义
强制转换无效的原因可能是因为在您的场景中,当模型绑定器想要完成其工作时,答案为空。如果您使用formscollection而不是字典,则会发现您发布的所有内容都在那里。
答案 1 :(得分:0)
由于某些奇怪的原因,当我删除“调查”并自行离开迭代(即[0] .Key)绑定工作正常。
我的知识基于这篇文章: http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx 那似乎是错的???或者它是指先前版本的MVC ???