传递给WEb API Action时丢失JSON中的值

时间:2015-10-16 10:27:19

标签: json asp.net-web-api

我有一个具有一些属性的对象(A),其中一个属于一个类型(B)的列表。

我有一个Web API Action,它将A对象作为参数。

我只是测试我可以通过JSON儿子传递这个对象我有一个带有一些Javascript的webform,如下所示.......

    var tmpData = {
        lid: "f8fdb980-ccb8-4a54-9b83-b73dd2d569ca",
        aid: "8f6efc68-d747-42a4-b7d4-218951b66a97",
        bid: "e9f5e5d2-5d3d-41ac-89dc-7586ec2a5286",
        ps: []
    };
    tmpData['ps'].push({ "cid": "5a664dcc-8281-41f1-b81c-ae49499e12b8", "d": 5, "q": 2 });
    tmpData['ps'].push({ "cid": "4e9a30e0-c741-4708-88d7-8db4941c17cc", "d": 10, "q": 2 });

    var myJSON = JSON.stringify(tmpData);

    //Call the action to get the list in JSON format
    url = "http://localhost:64878/home/TakeTestBasketAddItemsRequest";
    $.ajax({
        url: url,
        type: 'POST',
        cache: false,
        data: myJSON,
        success: function (resultantData) {
            var s = resultantData;
            pResults.innerHTML = s;
        }
    });

这会使操作正常,并且对象在“ps”属性中有2个项目。 但是,这两个项目中的值会丢失,而且我会留下零/未初始化的值。

我是否丢失了列表项的值?

为清楚起见 - 这也是我的行动。

    [HttpPost]
    public ActionResult TakeTestBasketAddItemsRequest(ECodeBasketRequest model)
    {
        try
        {
            var sb = new StringBuilder();
            sb.AppendLine(String.Format("LocationBridgeId: {0}{1}", model.lid, Environment.NewLine));
            sb.AppendLine(String.Format("ApplicationBridgeId: {0}{1}", model.aid, Environment.NewLine));
            sb.AppendLine(String.Format("BasketId: {0}{1}", model.bid, Environment.NewLine));
            foreach (var p in model.ps)
            {
                sb.AppendLine(String.Format("CategoryBridgeId: {2} Denomination: {0} Quantity: {1}{3}", p.d, p.q, p.cid, Environment.NewLine));
            }
            return Content(sb.ToString());
        }
        catch (Exception ex)
        {
            return Content(string.Format("Problem: {0}", ex.ToString()));
        }
    }

正如我所说的那样,我现在只是在测试,所以我很乐意深究这一点。谢谢你的推荐, 蚂蚁

1 个答案:

答案 0 :(得分:0)

道歉所有 - 但似乎我省略了内容类型.... contentType:" application / json"

当一些物体被重建时,它会产生误导,其余的不是......但是嘿嘿 - 这是星期五它正在工作..

希望它会帮助别人...... 所以我现在发现这有效.....

    $.ajax({
        url: url,
        type: 'POST',
        cache: false,
        **contentType: "application/json",**
        data: myJSON,
        success: function (resultantData) {
            var s = resultantData;
            pResults.innerHTML = s;
        }