netcore ajax上传,.netCore WebApi传输参变化

标签:指定   post   处理   strong   webapi   har   control   char   ati

.netCore 的 WebApi,一般以前的mvc5,继承自 ApiController ,则是WebApi,采用独有的管道处理模型,再Core中,一般是 继承自 ControllerBase,控制器类上标注[ApiController]

1.前端代码

1 //NetCoreWebApi中,传输 application/json; 格式的,后端无需加[FormBody]也能拿到值

2 $.ajax({3 type: "post",4 url: "/api/WebApi/ww",5 data: JSON.stringify( { a: 1, b: 2,c: 4,"yy":99,"bb":"匹配"} ), //如果没有序列化,后端获取不到,序列化了,WebApi不需要加 FormBody,能拿到值,contentType: "application/json;charset=utf-8"//不加上 默认不是表单的那种也不是json那种

6 contentType: "application/x-www-form-urlencoded",//这个类型无法指定

7 data: { a: 1, b: 2,c: 4,"yy":99,"bb":"匹配"},8 })

2.后端代码

[HttpPost]

[Route("ww")]public string Po(KJ k, int yy, stringbb)

{//k null//yy 0//b null

}

3.结论:

因为前端指定了,传输类型为,"application/x-www-form-urlencoded",就算不写 contentType,它的默认值也是“application/x-www-form-urlencoded”,但是指定失败

最后的请求格式:application /problem json; charset=utf-8

报错为:415

解决:指定为 json传输,序列化后传输,后端就可以拿到值 (可以不用[FormBody]),核心都在 传输的 contentType

[HttpPost]

[Route("E3")]public string fdasfs([BindAttribute(include: "a,b")] [FromBody] KJ p, int r = 0)

{//******************.Net Core Mvc WebApi的post的使用**************************///1.前端指定的application/json,传输json数据,不管有没有[FromBody]都可以拿到值

/*2.前端指定的application/x-www-form-urlencoded,传输json数据或者json对象,失败,

*明明设置了传输类型,但是却成了 application /problem json; charset=utf-8,导致请求失败

3.如果传入的除了一个实体,还有其他参数,那就都绑定不上 都没有拿到值

前端是这样的:{user: {a: 1, b: 9}, r: 99} 就是不行的,

{a: 1, b: 9}可行的

必须整成一个实体

/* var json = { user: { a: 1, b: 9, }, r: 99 };

$.ajax({

url: "/api/mm/E3",

type: "post",

//contentType:"application/x-www-form-urlencoded",//写成这种,写了也白写,最终传输类型被覆盖

contentType:"application/json",

data:JSON.stringify(json)

});*/?/*4.NetCore的 BindAttribute特性 在 contentType:"application/json 不起作用,不能绑定指定的属性,在

contentType:"application/x-www-form-urlencoded 表单中完全可以,过滤掉不需要的属性

FormData

a:1

b:9*/

return "OK";

}

.netCore WebApi传输参变化

标签:指定   post   处理   strong   webapi   har   control   char   ati

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值