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

时间:2012-12-19 07:21:03

标签: asp.net json asp.net-mvc-3

如何在MVC 3操作中接收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
}

2 个答案:

答案 0 :(得分:2)

我认为应该是这样的:

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

答案 1 :(得分:1)

我通常通过使用jQuery与jSON库结合使用jjax回发到服务器来实现此目的。

发回服务器的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
            }
        });
    }

jQuery Library

JSON Library