又是一个通宵,终于搞明白了。

被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来做吧

WebApi用Post的方式提交Json时,获取不到值或不进对应方法的问题的更多相关文章

  1. 前端ajax用post方式提交json数据给后端时,网络报错 415

    项目框架:spring+springmvc+mybatis 问题描述:前端ajax用post方式提交json数据给后端时,网络报错 415 前端异常信息:Failed to load resource ...

  2. 导出excel时,以form方式提交json数据

    今天在写项目时写到一个excel的导出,开始想用ajax请求后台后导出,但发现ajax会有返回值,而且ajax无法直接输出文件,而后台的excel导出方法已经封装好,不方便修改. 就改用了提交的方式f ...

  3. PHP 以POST方式提交XML、获取XML,最后解析XML

    以POST方式提交XML // Do a POST $data="<?xml version='1.0' encoding='UTF-8'?> <TypeRsp> & ...

  4. 【模态窗口-Modeldialog】提交请求时禁止在新窗口打开页面的处理方法

    在使用Window.ShowModalDialog()打开模态窗口后,在模态窗口内提交时总是会在新窗口中打开. 解决办法: 在要弹出的窗口的<head>之间加: <base targ ...

  5. window.location.href方式提交json数据

    ${ctx}/vehicleFlow/to_vehflow_detail.do?strJson="+encodeURIComponent(json)

  6. C#使用post方式提交json数据

    尝试了一天,尝试了各种方法,一下方法最直接方便. //地址 string _url = "https://www.dXXXayup.ink/api/User/Login"; //j ...

  7. Java 通过HttpClient Post方式提交json请求

    package com.sinosoft.ap.harmfullibrary.util; /** * 发送post请求 */import net.sf.json.JSONObject; import ...

  8. SpringMVC 利用@ResponseBody注解返回Json时,出现406 not acceptable 错误的解决方法。

    1 在RequestMapping中加入produces属性如: @RequestMap(value="/path",produces="application/json ...

  9. SqlParameter设定的value值为0时、调用的存储过程获取到的值却为null解决方法

    原C#代码如下: if (query != null) { switch (query.MethodFlag) { //进出口退补税额统计表 case (int)EnumClassifyCorrect ...

随机推荐

  1. python 定义类 学习2

    构造函数的变量 也叫做 实例变量 class role(): # 传参数 def __init__(self,name,role,weapon,life_value=100,moneny=15000) ...

  2. Django进阶 (二)

    规范 确立规范的好处: 代码可读性高 方便代码的定位极其查找 为以后代码扩容带来便利 场景: 在多个APP的场景下,单个app的URL函数功能较多的时候,我们可以通过以下方法来解决. 把Views写成 ...

  3. Qt编译出错:“Cannot find file...... .pro."

    刚接触Qt,使用Qt5.7时,出现如下编译错误: 其实原因很简单,就是Qt工程目录不能有“中文”.“全角符字符”[暂时发现这两种情况].

  4. 限制可编辑div只能输入纯文本

    本博客转载自张鑫旭大神的一篇文章:小tip: 如何让contenteditable元素只能输入纯文本,原文地址:http://www.zhangxinxu.com/wordpress/2016/01/ ...

  5. (3)在Windows7上搭建Cocos2d-x

    工具准备 搭建开发环境需要安装工具包括 Visual Studio python ———(本教程以python2.7.3版本为例),下载地址:http://www.python.org/downloa ...

  6. jQuery获取属性

    jQuery在获取jQuery对象的属性时,出现attr()获取不到的情况,此时,请使用prop()获取 如下为经常用到的: var oHtml=$(this).prop("outerHTM ...

  7. try with resources简洁的异常捕获机制

    通过前篇的<Java文件IO流的操作总结>,我们知道了基本输入输出流的使用方式,但是每次都需要在finally处关闭流资源,这样操作起来既啰嗦又麻烦,有没有更简洁的方式呢?本篇就来讲解jd ...

  8. CyclicBarrier实现流水处理服务类

    package com.yzu.zhang.thread.concurrent; import java.util.Map.Entry; import java.util.Random; import ...

  9. springcloud16---zuul-filter

    package com.itmuch.cloud; import org.springframework.boot.SpringApplication; import org.springframew ...

  10. 基于std::string的字符串处理

    转自:http://zxdflyer.blog.163.com/blog/static/25664262201322510217495/ C++标准模板库std使用广泛.该库中处理字符串的对象为std ...