首页 > 解决方案 > 如何从 OkObjectResult 获取价值并从 Angular6 订阅?

问题描述

这是一个快速的问题给你们!

我得到了一个 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"));
  }

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

在此处输入图像描述

你知道为什么我不能从结果中看到 id 吗?

谢谢

标签: angularasp-net-core-spa-services

解决方案


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

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

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

然后使用该工具重新生成代码,您就可以开始了!


推荐阅读