[FromBody]与[FromForm]区别
[FromBody]与[FromForm]区别
1,FromBody:在Action方法传入参数后添加[frombody]属性,参数将以一个整体的josn对象的形式传递。
代码示例:
/// <summary> /// 发公告 /// </summary> /// <param name="dateTime"></param> /// <returns></returns> [HttpPost, Route("SendAnnounce")] public IActionResult SendAnnounce([FromBody] Announce message) { var obj = Service.SendAnnounce(message).Result; return Json(Newtonsoft.Json.JsonConvert.SerializeObject(obj)); }
前端是js,ajax 调用直接传递json字符串就可以了。注意 Content-Type(内容类型)
contentType : 'application/json', // JSON数据格式 (data只能是json字符串)
$.ajax({ url: actionUrl, type: 'POST', datType: 'JSON', // 返回值类型 contentType: 'application/json', // 默认值: 'application/x-www-form-urlencoded' data: "{'id': " + 123 + '}', // json 字符串 async: false, success: function () {} })
2,FromForm:在Action方法传入参数后添加[FromForm]属性,参数将以表单【key:value对Array组】的形式提交。
注意,现在vue/angular 等框架使用from表单形式的少了
[HttpPost("AddUserModel")] public User UserAddUserModel([FromForm]User users) { return users; }
js
<!--HTML--> <form action="" method="post" id="test_form"> <input type="text" name="username" value="" /> <input type="password" name="pwd" value="" /> <button type="button" onclick='doSubmitForm()'>提交<button/> </form> <script> var form = document.getElementById('test_form'); // 也可以这样提交 form.submit(); </script>
.netcore 官方文档 (https://docs.microsoft.com/zh-cn/aspnet/core/web-api/?view=aspnetcore-2.1)
绑定源参数推理
绑定源特性定义可找到操作参数值的位置。 存在以下绑定源特性:
特性 | 绑定源 |
---|---|
[FromBody] |
请求正文 |
[FromForm] |
请求正文中的表单数据 |
[FromHeader] |
请求标头 |
[FromQuery] |
请求查询字符串参数 |
[FromRoute] |
当前请求中的路由数据 |
[FromServices] |
作为操作参数插入的请求服务 |
HTTP Content-type (https://www.runoob.com/http/http-content-type.html)
常见的媒体格式类型如下:
- text/html : HTML格式
- text/plain :纯文本格式
- text/xml : XML格式
- image/gif :gif图片格式
- image/jpeg :jpg图片格式
- image/png:png图片格式
以application开头的媒体格式类型:
- application/xhtml+xml :XHTML格式
- application/xml: XML数据格式
- application/atom+xml :Atom XML聚合格式
- application/json: JSON数据格式
- application/pdf:pdf格式
- application/msword : Word文档格式
- application/octet-stream : 二进制流数据(如常见的文件下载)
- application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
另外一种常见的媒体格式是上传文件之时使用的:
- multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式