【问题标题】:ASP.NET MVC 3, receive JSON partially as a dictionary? [duplicate]ASP.NET MVC 3,部分接收 JSON 作为字典? [复制]
【发布时间】:2012-12-06 12:12:49
【问题描述】:

如何在 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
}

【问题讨论】:

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


    【解决方案1】:

    我觉得应该是这样的:

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

    【讨论】:

    • 我没有测试,但它是一个有效的 Javascript 对象吗?
    • 我忘了把“{”换成“[”。现在有效
    • 现在完美运行。谢谢!
    【解决方案2】:

    我通常通过 ajax 将 jQuery 与 JSON 库结合使用 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 Library

    JSON Library

    【讨论】:

      猜你喜欢
      • 2017-09-08
      • 2010-09-18
      • 2012-01-16
      • 2013-03-13
      • 2012-01-03
      • 2012-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多