我在Asp.Net核心Web API中工作。我编写了一个GET API。在API中,输入参数带有来自URL的$
符号。但在c#中,若参数带有美元符号的意思,就无法访问。如果参数名称前面有$
符号,如何获取输入值?
public class DataProperties
{
[JsonProperty("skip")]
public int Skip { get; set; }
[JsonProperty("top")]
public int Top { get; set; }
}
控制器
[HttpGet("list")]
public async Task<ActionResult> ListAsync([FromQuery]DataProperties data)
{
}
URL格式
/api/v1/list?$Skip=10&$Top=10
在没有像这样的$
符号的情况下,它可以很好地工作
/api/v1/tickets/list?Skip=10&Top=10
注意
我正在使用ODataAdaptor
。因此,当使用OData Adaptor时,参数名称前面会自动带有$
符号。
因为C#不允许在变量名的开头使用$
,但这是查询字符串中参数的有效键,所以可以用[FromQuery]
属性装饰参数,并显式指定名称,例如,如果实现标准OData$skip
和$top
参数:
public async Task<IActionResult> Get([FromQuery(Name = "$top")] string top, [FromQuery(Name = "$skip")] string skip)
{
// ...
}