我在新的.NET CORE应用中有一个REST API控制器。如果我进行以下调用:https://localhost/api/search?query=someText,则可以执行以下代码,因此路由似乎正确,但是query.query始终为null。我希望该值为“ someText”。
这是怎么了?
[HttpGet]
public IActionResult Get([FromQuery]SearchQuery query)
{
}
public class SearchQuery
{
[FromQuery(Name = "query")]
public string query { get; set; }
}
答案 0 :(得分:3)
问题在于您的参数名称发生冲突,导致模棱两可,因为它们全为query
。
如果您具有这样的功能,它将起作用:
[HttpGet]
public IActionResult Get([FromQuery]SearchQuery queryParam)
{
// here you can use queryParam.query
}
public class SearchQuery
{
[FromQuery(Name = "query")]
public string query { get; set; }
}
您还可以使其将参数[FromQuery(Name = "query")]
的名称更改为query
以外的名称,但是在这种情况下,您将需要根据以下内容更改请求查询字符串。