WebApi用Post的方式提交Json时,获取不到值或不进对应方法的问题

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

被WebApi坑得好惨。

之前用各种方法Post上来,有时可以读到结构,但没值,有时直接就是一个Null,有时连方法都没进就跑了,只是来控制器里看了一下……

最后好友说还是用Json,于是又回去看,最后实验了好久,终于成功了。

首先,用的是

 : ApiController

  接口,而不是普通的MVCController

其次,方法的命名是这样的:

 [HttpPost]
 public Response<string> PostTest([FromBody]JObject 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对应的内容是没有双引号的。

这样应该也就差不多了。

嗯,可以去吃早餐了。

时间: 2024-11-05 12:26:25

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

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

项目框架:spring+springmvc+mybatis 问题描述:前端ajax用post方式提交json数据给后端时,网络报错 415 前端异常信息:Failed to load resource: the server responded with a status of 415 (Unsupported Media Type) 后端异常信息:无 报错原因:缺少jackson包 类似问题注意点: springmvc添加配置.注解: pom.xml添加jackson包引用: Ajax请求时没

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

今天在写项目时写到一个excel的导出,开始想用ajax请求后台后导出,但发现ajax会有返回值,而且ajax无法直接输出文件,而后台的excel导出方法已经封装好,不方便修改. 就改用了提交的方式form,但form提交,表格分页用的是jquerytable,我需要将一些jquerytable的一些参数传到后台,但这些数据已经是json数据,如果我直接放在input中提交到后台在解析参数会很麻烦,所以就想将json数据转为form方式提交. js //导出 function exportExc

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

在使用Window.ShowModalDialog()打开模态窗口后,在模态窗口内提交时总是会在新窗口中打开. 解决办法: 在要弹出的窗口的<head>之间加: <base target="_self"/> 这样提交请求时就不会在新窗口打开页面了.

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

以POST方式提交XML // Do a POST $data="<?xml version='1.0' encoding='UTF-8'?> <TypeRsp> <CONNECT_ID>1</CONNECT_ID> <MO_MESSAGE_ID>2</MO_MESSAGE_ID> </TypeRsp>"; //$data = array('name' => 'Dennis', 'surname'

oozie 提交作业时因请求资源不足而suspend的解决方法

1,环境情况 安装的CDH5.4,使用CM来管理各个组件(Yarn.Spark.HDFS.Hive.Oozie……). 2,在shell命令下提交Oozie作业 ①sudo –u hdfs hadoop fs –mkdir /user/cdhfive      创建一个专门的用户目录,这里为cdhfive ②sudo –u hdfs hadoop –chown –R cdhfive /user/cdhfive      权限更改 ③hadoop fs –put examples /user/cd

jQuery $.post()返回类型为json时不进入回调函数的原因及解决方法

这真是个让人特别抓心找挠肝的问题,真的差点被这个问题逼的放弃去使用json作为返回类型,而是去用html,但是有的时候就是要较汁一下.(即便现在问题解决了,我还是想说句"妈蛋",来发泄一下) 其实主要还是自己对json的不够了解,但是很纳闷,网上对路的解决方法几乎没有.所以虽然问题很小,但是还是想要分享出来,希望能帮到需要的人. 首先$.post()格式如下: $.post(url,data,success(data, textStatus, jqXHR),dataType) 参数描述

码云 提交代码时密码输错不能上传的解决方法

PS:VS2017 提交代码弹出码云登陆,输错了账号密码导致提交失败 正在推送 masterRemote: [31mIncorrect username or password ( access token )[0m发布到远程存储库时遇到错误: Git failed with a fatal error.Authentication failed for 'https://gitee.com/Liu_Cabbage/RightControl.git/'Pushing to https://git

String作为输出型参数时获取不到值

有时候在一个方法中,我们需要返回多个字符串,而又不想将这些字段包成一个类.此时就需要使用输出型参数. 但是如果将输出型参数的类型声明为String,那么调用该方法后,是获取不到我们想要的值的. 测试代码如下: public class StringTest { public static void main(String[] args){ StringTest st = new StringTest(); String a = "a"; String b = "b"

插入时获取自增序列值

1 <!--插入--> 2 <insert id="insertMessage" parameterType="message" useGeneratedKeys="true" keyProperty="id"> 3 INSERT INTO message (command, description, content) VALUES (#{command},#{description},#{conten