标签:one ring ext value script color info nbsp 别人
经常有朋友遇到webapi参数传递问题,自己也碰到过一些坑,在此记录下正确的姿势,简单参数传递相信没有人会有问题,容易出现问题的是对象参数和表单参数。
控制器代码如下:
public class ValuesController : ApiController { // POST api/values [HttpPost] [Route("~/api/Values/Post")] public UserModel Post(UserModel value) { return value; } [HttpPost] [Route("~/api/Values/Put")] // PUT api/values/5 public UserModel Put([FromBody]UserModel value) { return value; } } public class UserModel { public string UserName { get; set; } public string Password { get; set; } }
对应的JS请求代码如下,对于有FromBody的Put请求来说,两种请求方式都是可以的:
<script type="text/javascript"> $(function () { $(‘#btnPost‘).click(function () { $.ajax({ url: ‘/api/Values/Post‘, data: { UserName: ‘Admin‘, Password: ‘123456‘ }, method: ‘POST‘, dataType: ‘json‘ }).done(function (result) { $(‘#txtPost‘).val(JSON.stringify(result)); }) }) $(‘#btnPostFromBody‘).click(function () { $.ajax({ url: ‘/api/Values/Put‘, data: { UserName: ‘Admin‘, Password: ‘123456‘ }, method: ‘POST‘, dataType: ‘json‘ }).done(function (result) { $(‘#txtPostFromBody‘).val(JSON.stringify(result)); }) $.ajax({ url: ‘/api/Values/Put‘, data: JSON.stringify({ UserName: ‘Admin‘, Password: ‘123456‘ }), method: ‘POST‘, dataType: ‘json‘, contentType: ‘application/json‘ }).done(function (result) { $(‘#txtPostFromBody‘).val(JSON.stringify(result)); }) }) })
有图有真相
服务端代码如下:
public class ValuesController : Controller { // POST api/values [HttpPost] [Route("~/api/Values/Post")] public UserModel Post(UserModel value) { return value; } [HttpPost] [Route("~/api/Values/Put")] // PUT api/values/5 public UserModel Put([FromBody]UserModel value) { return value; } } public class UserModel { public string UserName { get; set; } public string Password { get; set; } }
js请求代码有所不同,FromBody不再提供兼容支持 只能采用application/json方式提交:
$(‘#btnPost‘).click(function () { $.ajax({ url: ‘/api/Values/Post‘, data: { UserName: ‘Admin‘, Password: ‘123456‘ }, method: ‘POST‘, dataType: ‘json‘ }).done(function (result) { $(‘#txtPost‘).val(JSON.stringify(result)); }) }) $(‘#btnPostFromBody‘).click(function () { $.ajax({ url: ‘/api/Values/Put‘, data: JSON.stringify({ UserName: ‘Admin‘, Password: ‘123456‘ }), method: ‘POST‘, dataType: ‘json‘, contentType: ‘application/json‘ }).done(function (result) { $(‘#txtPostFromBody‘).val(JSON.stringify(result)); }) })
调用结果:
有时候难免有上传文件的需求,对象存储这个嘛有的时候客户不愿意多花钱或者把文件存到别人的服务器上,只能自己存了。为了少点垃圾文件还是和表单一起提交吧。
标签:one ring ext value script color info nbsp 别人
原文地址:https://www.cnblogs.com/shya/p/9085468.html