Web Api Post方法总是接收NULL参数

时间:2016-04-26 22:21:37

标签: c# asp.net-mvc wcf json.net

我正在尝试将List作为参数传递给web Api,使用下面的代码;

客户端

 public async Task<ActionResult>BatchUpdatePartial(MVCxGridViewBatchUpdateValues<NewWorkItem, int> batchValues)
    {

        var updatedItems = new List<NewWorkItem>();

        string url = "http://localhost:9198/api/values";

        foreach (var item in batchValues.Update)
        {
            if (batchValues.IsValid((item)))
            {
                var updatedVals = new NewWorkItem();

                updatedVals.CPK_ID = item.CPK_ID;
                updatedVals.BYR_ID = item.BYR_ID;
                updatedVals.P_ID = item.P_ID;
                updatedVals.CPK_PRI_FLG = item.CPK_PRI_FLG;
                updatedItems.Add(updatedVals);
            }

            else
                batchValues.SetErrorText(item, "Correct Vallidation Errors");
        }

        using (var client = new WebClient())
        {
            client.Headers[HttpRequestHeader.ContentType] = "application/json";
            client.Encoding = System.Text.Encoding.UTF8;
            string serialisedData = JsonConvert.SerializeObject(updatedItems);
            string response = client.UploadString(url, serialisedData);
            Object result = JsonConvert.DeserializeObject(response);
         }

        return PartialView("_GridViewPartial", NewWorkItem.GridData);
    }

服务器端

  public string Post([FromBody]string[] values)
        {
        string seperator = ",";
        string data = string.Join(seperator, values.ToList<string>());
        string result = string.Format("Succesfully uploaded: {0}", data);
        return result;
        }

但是我总是在服务器端的值中得到NULL?

你能建议我解决方案吗?

由于

1 个答案:

答案 0 :(得分:0)

不幸的是,您实际上并没有像POST方法所期望的那样发送string[]。您正在发送serializedData,这是您自己定义的updatedItems的序列化。 updatedItems是一个引用类型的列表 - 你没有在这里提供它的定义,但我保证你不会像字符串一样序列化。

您需要将updatedItems更改为List<string>或类似内容。