在Angular 6中传递带有空字符串的整数值时,API Get方法未调用

时间:2018-12-18 10:39:08

标签: c# angular typescript asp.net-core asp.net-core-webapi

在我的angular应用程序中,从angular调用API方法时遇到错误。我必须传递两个参数。第一个是整数值,第二个是字符串值。它是可选的。

请参见下面的代码段(打字稿)

let id:number = 5;
let value: string = "";

this.http.get<string[]>(this.appService.baseUrl + 'api/File/' + id + "/" + value)

在控制器中:

[HttpGet("{id:int}/value")]
[ResponseCache(NoStore = true)]
public async Task<IActionResult> Get(int id, string value) { }

由于value参数为空,因此Get方法未调用。

3 个答案:

答案 0 :(得分:4)

在您的示例中,您正在构建此URL:

/api/File/5

但是,您的控制器要求满足以下条件:

/api/File/5/value

如果您希望此处value是可选的并被放置到value参数(string value)中,则可以调整HttpGet属性,如下所示:< / p>

[HttpGet("{id:int}/{value?}")]

这使value是可选的,并且是传入任何内容的占位符。

答案 1 :(得分:3)

我只具有asp.net Web API的经验,但据我所知,将字符串值设置为空会导致路由更改。由于您没有只采用int的路由,因此您的请求永远不会到达您的api。您需要做的是重载Get方法并使一个仅接受一个int的方法。

答案 2 :(得分:0)

您在URL中输入了变量shareType的类型,并且正在为变量shareValue传递空字符串。删除变量:number之后的shareType,并为变量shareValue分配一个值。