当使用angularJs执行$http post时,为什么需要FromBody属性

我可以发送我的数据到服务器,但只有当我使用FromBody属性.

为什么json数据不会使用Post自动从Body读取?

后端web api

[HttpPost]
public async Task<IActionResult> Post([FromBody]CreateSchoolyearRequestDTO dto)
{

}

前端角

this.createSchoolyear = function (schoolyear) {
  var path = "/api/schoolyears";
  return $http({
      url: path,method: "POST",data:  schoolyear,contentType: "application/json"
  }).then(function (response) {
      return response;
  });
};
只是因为某些东西是一个POST请求,没有明确的规则如何传递参数. POST请求仍然可以包含URL中编码的查询参数.方法参数预期是“简单”类型(字符串,ints等)的查询参数.

复杂类型通常期望是POST表单对象.标准ASP.NET POST请求是一个表单提交,例如.当这些请求中的参数通常被编码为application / x-www-form-urlencoded,基本上是一串键/值对.对于复杂参数类型,例如表单视图模型对象,这是默认的.

对于所有其他非默认情况,您需要明确显示方法参数来自哪里,如何在请求中传输.为此,有许多不同的属性

> FromBodyAttribute – 对于来自请求体的参数> FromFormAttribute – 用于来自单个表单数据字段的参数> FromHeaderAttribute – 对于来自HTTP头字段的参数> FromQueryAttribute – 来自URL中编码的查询参数的参数> FromRouteAttribute – 对于来自路由数据的参数> FromServicesAttribute – 对于在方法级别注入服务的参数

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...