又是一个通宵,终于搞明白了。
被WebApi坑得好惨。
之前用各种方法Post上来,有时可以读到结构,但没值,有时直接就是一个Null,有时连方法都没进就跑了,只是来控制器里看了一下……
最后好友说还是用Json,于是又回去看,最后实验了好久,终于成功了。
首先,用的是
: ApiController
接口,而不是普通的MVCController
其次,方法的命名是这样的:
[HttpPost]
public Response<string> PostTest([FromBody]JObject value)
//这里用JObject类型来接收值,是因为WebApi不支持JSON字串做为简单参数传递,如果直接写PostTest([FromUri]string value)这样也是可以的。
最后,获取数据:
JToken jtk = value.GetValue("data");
List<model> list = jtk.ToObject<List<model>>();
这样就能得到一个List<model>了。
当然,要引用一个dll的:
using Newtonsoft.Json.Linq;
同时,在客户端要做一些设置:
如:
在发送Json的时候加上:
"Content-Type","application/json"
表明它是一个json
并且,要注意的是data这个key与内容的关系:
data对应的内容是没有双引号的。
这样应该也就差不多了。
嗯,可以去吃早餐了。
PS:
现在用WEBAPI用久了,其实只要提交的JSON没问题,直接用MODEL(POST,GET)或参数(GET)来作为接口的参数都可以了,主要是提交的数据格式要对。
另外,如果POST的数据里带有文件,有时也会导致用实体的方式接收不到数据的。
最后更新,NET CORE完全没这些问题了,建议大家做新项目都用NET CORE来做吧