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
}
4

2 回答 2

3

我认为应该是这样的:

UpdateData : 
{
   Id: 88991,
   Changes:
   [
      { Key: 'X', Value: 5 },
      { Key: 'Y', Value: 6 }
   ]
}
于 2012-12-19T07:40:01.087 回答
1

我通常通过使用 jQuery 结合 JSON 库的 ajax POST 回服务器来做到这一点。

回传到服务器的 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 库

JSON 库

于 2012-12-19T08:47:53.150 回答