如何从OkObjectResult获取值并从Angular6订阅?

时间:2018-07-08 22:30:50

标签: angular asp-net-core-spa-services

这对你们来说是一个快速的问题!

我有一个IActionResult,它返回带有Ok结果的整数。

public async Task<IActionResult> Post([FromBody]PageEditModel value)
        {
            if (!ModelState.IsValid)
                return BadRequest(ModelState);

                var model = Mapper.Map<PageEditModel, Page>(value);

                if (await _pageService.InsertAsync(model, _unitOfWork) > 0)
                    return Ok(new { id = model.Id });

                return Content("Cannot insert page");
            }
        }

我得到了发布PageEditModel的Angular方法:

onSubmit() {
      this._pageService.post(this.model)
        .subscribe(result => console.log(result),
          err => console.log("Oops, something happens in post page."),
          () => console.log("Post completed"));
  }

我想从结果中获取整数。整数不在结果中。

enter image description here

您知道为什么我无法从结果中看到ID吗?

谢谢

1 个答案:

答案 0 :(得分:0)

我得到了我的老问题的答案。我曾经并且仍在使用.NET,Web API和TypeScript的Swagger / OpenAPI工具链来生成Angular服务层。

在某些情况下,由于IActionResult返回类型,NSwag无法生成某些适当的对象。为此,我们必须添加SwaggerResponse和相应的状态代码,如下所示:

[SwaggerResponse("200", typeof(object))]
[SwaggerResponse("403", typeof(string))]
public async Task<IActionResult> ...

然后使用该工具重新生成代码,您就很好了!