zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【C#】绑定源特性(Binding Resource Attribute)之[FromBody]与[FromForm]

c# 特性 绑定 attribute resource Binding
2023-09-11 14:14:50 时间

[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>

.net core 官方文档

绑定源参数推理

绑定源特性定义可找到操作参数值的位置。 存在以下绑定源特性:

绑定源参数推理

特性绑定源
[FromBody]请求正文
[[FromForm]]请求正文中的表单数据
[FromQuery]请求查询字符串参数
[FromRoute]当前请求中的路由数据
[FromServices]作为操作参数插入的请求服务

Http Context-Type|
常见的媒体格式类型如下:

  • 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 : 中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

另外一种常见的媒体格式是上传文件之时使用的:

  • multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式