ASP.NET Web API发布值不会自动映射到对象

时间:2015-05-31 04:32:13

标签: asp.net json asp.net-mvc asp.net-web-api

我试图将带有json内容的请求发送到web api,这些值不会自动映射到我的对象。

这是我的API动作导致null。

    [HttpPost]
    public IEnumerable<string> GetCustomerByName([FromBody] Request_GetCustomerByName request)
    {
        // Some Action
    }

如果我更改下面的参数,我可以很好地收到我的数据。所以我想知道为什么我的json字符串不能自动映射到对象。

    [HttpPost]
    public IEnumerable<string> GetCustomerByName([FromBody] dynamic request)
    {
        // Some action
    }

这是我发送请求的地方。

    public ActionResult Index()
    {
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("http://localhost:40175/");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            Request_GetCustomerByName r = new Request_GetCustomerByName()
            {
                Customer = new Customer() { CustomerId = 1, CustomerName = "Name" },
                RequestBase = new RequestBase() { Somefield="123"}
            };

            var json = new JavaScriptSerializer().Serialize(r);

            HttpResponseMessage response = client.PostAsJsonAsync("api/values/GetCustomerByName", json).Result;
            if (response.IsSuccessStatusCode)
            {
                var resVal = response.Content.ReadAsStringAsync().Result;
                Response.Write(resVal);
            }
        }
        return View();
    }

谢谢,我已经被困在这一点上一段时间......

1 个答案:

答案 0 :(得分:0)

您应该检查Json字符串,这个在线json到c#对象映射器可能会有所帮助:http://json2csharp.com/