我有这样的get方法...
[HttpGet]
public async Task<ActionResult<IEnumerable<Customer>>> GetCustomers()
{
var queryString = HttpContext.Request.Query;
return await _context.Customers.Take(7).ToListAsync();
}
,我想传递这样的查询字符串:
https://localhost:44315/api/customer?param1=1¶m2=String Value
我想这样做而不必在我的参数列表中声明每个参数。例如
[HttpGet]
public async Task<ActionResult<IEnumerable<Customer>>> GetCustomers(int param1, string param2)
{
var queryString = HttpContext.Request.Query;
return await _context.Customers.Take(7).ToListAsync();
}
我想避免这样做,因为我的课有几十个参数。我知道您可以使用[FromQuery] Customer customer
进行绑定,但是我认为这并不是我想要的。
有没有办法动态地做到这一点?
答案 0 :(得分:0)
如果只想通过HttpContext访问查询参数而忘记了操作参数,则可以完全省略这些参数。 ASP.NET Core不会将查询字符串作为操作路由的一部分进行评估(这也意味着除非通过属性路由指定其他路由,否则您无法基于查询参数创建重载。)
答案 1 :(得分:0)
我最终做了这样的事情
exit(MY_ERROR_CODE);
然后在单独的类
中 //GET: api/customer
[HttpGet]
public async Task<ActionResult<IEnumerable<Customer>>> GetCustomers()
{
var queryParams = HttpContext.Request.Query;
var collection = _context.Customers.FilterByQueryParams(queryParams);
return await Task.FromResult(collection.ToList());
}
这里还有很多事情要做,但是我认为这是一个好的开始。