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

被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. 从零开始写JavaWeb框架(第二章节)

    这一章太多了...好累,不想写那么细了,就做一点总结吧. package org.smart4j.chapter2.controller; import java.io.IOException; im ...

  2. Notepad++插件安装和使用和打开大文件

    版权声明:本文为博主皮皮http://blog.csdn.net/pipisorry原创文章,未经博主同意不得转载. https://blog.csdn.net/pipisorry/article/d ...

  3. 【spring mvc】application context中【bean】的生命周期

    生命周期过程 主要分为四部分: 一.实例化 1. 当调用者通过 getBean( name )向 容器寻找Bean 时,如果容器注册了org.springframework.beans.factory ...

  4. A Practical Guide to Support Vector Classi cation

    <A Practical Guide to Support Vector Classication>是一篇libSVM使用入门教程以及一些实用技巧. 1. Basic Kernels: ( ...

  5. Python 在字符串中处理html 和xml

    问题: 想将HTML 或者XML 实体如&entity; 或&#code; 替换为对应的文本.再者,你需要转换文本中特定的字符(比如<, >, 或&). 解决方案: ...

  6. OpenVAS安装过程

    OpenVAS安装过程 安装过程 检查安装状况 命令行下输入opensav-check-setup,显示错误NO CA certificate file,并显示解决方法 创建证书 输入命令openva ...

  7. 20145325张梓靖 《Java程序设计》第5周学习总结

    20145325张梓靖 <Java程序设计>第5周学习总结 教材学习内容总结 try catch Java中所有错误都会被打包为对象.如果某个方法声明会抛出Throwable或子类实例,只 ...

  8. kali_常用软件记录

    可参考:http://www.lvzejun.cn/2015/03/31/ubuntu-software/ 录屏软件 http://www.kohaupt-online.de/hp/ http://l ...

  9. Django-ORM查询api

    models.py示例 class Book(models.Model): nid=models.AutoField(primary_key=True) title=models.CharField( ...

  10. MyBatis的简单入门学习

    一个新知识开始是最难学的.(万事开头难) MyBatis大体分三层,接口层,数据处理层,基础支撑层. 其中接口层不是java中的那个interface,而是框架和程序员之间的对接.一个API,程序员可 ...