Asp.net mvc 将javascript对象作为字典传输到控制器操作中

Asp.net mvc 将javascript对象作为字典传输到控制器操作中,asp.net-mvc,Asp.net Mvc,有没有办法传递这个javascript对象 Object { 35=true, 179=true, 181=true} 作为一个控制器动作 Dictionary<int, bool> 及 然而,在这两种情况下 public ActionResult UpdateProjectStructureSelection(int tlpId, Dictionary<int, bool> values) public ActionResult UpdateProjectStru

有没有办法传递这个javascript对象

Object { 35=true, 179=true, 181=true}
作为一个控制器动作

Dictionary<int, bool>

然而,在这两种情况下

public ActionResult UpdateProjectStructureSelection(int tlpId, Dictionary<int, bool> values)
public ActionResult UpdateProjectStructureSelection(int-tlpId,字典值)
已调用,但值为空

由于我将更复杂的类型转换为控制器操作,而没有编写自定义模型绑定器,所以我一直在想,我是否只是在这里做错了什么

自定义模型活页夹是将其作为字典获取的唯一方法吗?(在客户端使用JsonConvert+stringify除外)

添加(这很有效,但我希望避免额外的代码):

public ActionResult UpdateProjectStructureSelection(int-tlpId,字符串值)
{
var dict=JsonConvert.DeserializeObject(值);
}

不使用该格式的对象。
DefaultModelBinder

var data = { 'dict[0].key': '35', 'dict[0].value': 'True', 'dict[1].key': '179', 'values[1].value': 'True', dict[0].key': '8', 'dict[0].value': 'True' };
$.post(remoteUrl, data, function(callbackResult) {
和控制器

public ActionResult UpdateProjectStructureSelection(Dictionary<int, bool> dict)
公共操作结果更新项目结构选择(字典目录)
正如您所指出的,另一个选项是使用自定义的
ModelBinder
,例如这样的工具。但它确实有意义,因为它不适用于对象表示法。非常感谢。
    public ActionResult UpdateProjectStructureSelection(int tlpId, string values)
    {
        var dict = JsonConvert.DeserializeObject<Dictionary<int, bool>>(values);
    }
var data = { 'dict[0].key': '35', 'dict[0].value': 'True', 'dict[1].key': '179', 'values[1].value': 'True', dict[0].key': '8', 'dict[0].value': 'True' };
$.post(remoteUrl, data, function(callbackResult) {
public ActionResult UpdateProjectStructureSelection(Dictionary<int, bool> dict)