c# – Web API控制器 – 查询字符串中的“action”参数

我有以下Web api控制器

public class ApiController : Controller
{
    [Route("api/test")]
    [HttpGet]
    public string GetData(string key, string action, long id)
    {
        var actionFromQuery = Request.Query["action"];
        return $"{key} {action} {id}";
    }
}

我在查询字符串中需要一个名为“action”的参数,因此它向后兼容现有的API.
当我发出get请求时,操作方法参数被错误地分配给web api action ==控制器方法名称.

示例GET
http://SERVER_IP/api/test?key=123&action=testAction&id=456
返回“123 GetData 456”

我希望它能返回“123 testAction 456”
actionFromQuery变量被正确分配给’testAction’.
‘action’是一个无法覆盖的保留变量吗?
我可以通过更改某些配置来解决此问题吗

我没有配置任何路由,只有services.AddMvc();和app.UseMvc();在我的启动.

最佳答案 谢谢
this comment

添加[FromQuery]有助于正确分配变量

public class ApiController : Controller
{
    [Route("api/test")]
    [HttpGet]
    public string GetData(string key, [FromQuery] string action, long id)
    {
        return $"{key} {action} {id}";
    }
}
点赞