Web API Post 方法始终接收 NULL 参数



我正在尝试将列表作为参数传递给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?

你能建议我解决方案吗?

谢谢

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

您需要将updatedItems更改为List<string>或类似的东西。

相关内容

  • 没有找到相关文章

最新更新