c# - 当参数从 WebApi Controller 方法从 Angular 服务传递时,采用 Int 的默认值

标签 c# angular6 asp.net-core-webapi

我是 Angular 和 WebApi 新手。
我想使用 webApi 调用检索数据。
我正在尝试调用 Api 方法并从角度服务传递 id。
下面是服务。

retrieve-data.service.ts

    GetBatchDetailsById(batchId) {
        return this.httpClient.get<IPerson>(this.base_url + 
        'api/SampleData/GetPersonsById', batchId);
    }

当我看到 webApi 方法时,参数是 int 类型,在调试时我看到该值为 0。
你能帮我看看我缺少什么吗?

SampleDataController.cs

[Route("api/[controller]")] 
public class SampleDataController : Controller {

    [HttpGet("{id:int}")]
    public Person GetPersonsById(int id)
    {
        return SampleDataController.personList.FirstOrDefault(x=> x.Id == id);
    }
}

最佳答案

考虑到所使用的路由属性,请求需要遵循路由模板

api/SampleData/{id:int}

但是既然你使用

api/SampleData/GetPersonsById

GetPersonsById 段被视为 id 参数,并且由于它不是 int,因此默认为 0

使用正确的格式相应地构造您的目标 URL

GetBatchDetailsById(batchId) {
    var url = this.base_url + 'api/SampleData/' + batchId;
    return this.httpClient.get<IPerson>(url);
}

引用Routing in ASP.NET Core

引用Routing to controller actions in ASP.NET Core

关于c# - 当参数从 WebApi Controller 方法从 Angular 服务传递时,采用 Int 的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57756400/

相关文章:

c# - 如何在 Entity Framework 中编写此 SQL 查询?

angular6 - Angular 6 *ngSwitchCase 不工作

c# - 通用 EF6 存储库方法不会生成正确的 SQL

c# - 如何从 Azure Service Fabric 无状态服务访问 appsettings.json

safari - Angular 6 应用程序在 safari 浏览器中不起作用

cordova - Ionic 3-如何在设备默认浏览器中打开外部 url

c# - 使用 Unity 的 Web Api 核心项目

authentication - 与我自己的水疗中心一起使用时,OAuth2 资源所有者密码凭证授予是否安全?

c# - 为什么 web.config 是在发布时创建的,而不是在 Asp.Net Core API 中构建项目时创建的?

c# - 正则表达式 if 条件 c#