Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET MVC 3,是否将JSON部分作为字典接收?_Asp.net_Json_Asp.net Mvc 3 - Fatal编程技术网

ASP.NET MVC 3,是否将JSON部分作为字典接收?

ASP.NET MVC 3,是否将JSON部分作为字典接收?,asp.net,json,asp.net-mvc-3,Asp.net,Json,Asp.net Mvc 3,如何在MVC3操作中接收JSON作为模型(包含字典) 浏览器端:将JSON发布到MVC3操作: UpdateData : { Id: 88991, Changes: { X:5, Y:6 } } 服务器端: public class UpdateDataModel { public int Id {get;set;} public IDictionary<string, string> Changes {get;se

如何在MVC3操作中接收JSON作为模型(包含字典)

浏览器端:将JSON发布到MVC3操作:

UpdateData : 
{
   Id: 88991,
   Changes:
   {
      X:5,
      Y:6
   }
}
服务器端:

public class UpdateDataModel
{
    public int Id {get;set;}
    public IDictionary<string, string> Changes {get;set;}
}

public ActionResult SaveUpdateData(UpdateDataModel updateData)
{
    // updateData.Id should be 88991
    // updateData.Changes should be a dictionary containing X:5, Y:6
}
公共类更新的数据模型
{
公共int Id{get;set;}
公共IDictionary更改{get;set;}
}
公共操作结果SaveUpdateData(UpdateDataModel updateData)
{
//updateData.Id应该是88991
//更改应该是一个包含X:5,Y:6的字典
}

我认为应该是这样的:

UpdateData : 
{
   Id: 88991,
   Changes:
   [
      { Key: 'X', Value: 5 },
      { Key: 'Y', Value: 6 }
   ]
}

我通常通过使用jQuery和JSON库通过ajax发回服务器来实现这一点

发布回服务器的json需要与服务器端模型中的属性正确匹配,以便MVC中的默认模型绑定器能够确定将其映射到什么。 您的控制器操作/路由将很好,以下是客户端的外观:

    function Save()
    {
        var data = {
            updateData: {
                Id: 85,
                Changes: [
                    { Key: 'A', Value: 'B' },
                    { Key: 'C', Value: 'D' },
                ]
             }
        };

        $.ajax({
            type: 'POST',
            url: '/someController/SaveUpdateData',
            contentType: 'application/json',
            dataType: 'json',
            data: JSON.stringify(data),
            success: function(response) {
                //do stuff here after finishing server side
            }
        });
    }


我没有测试,但它是一个有效的Javascript对象吗?我忘了将“{”改为“[”。现在它的validIt可以很好地工作了。谢谢!