【发布时间】:2021-10-26 10:53:59
【问题描述】:
我们正在定义一个用于搜索存储在存储库中的文档的操作;该界面允许指定过滤器列表以缩小结果范围。
[Route("search")]
[HttpGet]
[ProducesResponseType(typeof(List<DocumentDto>), (int)HttpStatusCode.OK)]
public async Task<ActionResult<DocumentDto>> GetDocuments(
[FromServices] IDocumentManager documentManager,
[FromQuery] Dictionary<string, string> filters)
{
//Do something
}
我们在动作签名中使用Dictionary<string, string> filters 之类的参数,因为我们希望使用 GET 方法但使用动态参数列表来实现搜索。
过滤器只是key:value 对象的列表,操作将传递给数据库,这是唯一知道如何处理它们的层。
我们使用调用这样的 url 的服务:
/search?filter1=value1&filter2=value2&filter3=value3
绑定似乎“有效”,filters 填充了如下内容:
filters
[0] {[filter1, value1]}
[1] {[filter2, value2]}
[2] {[filter3, value3]}
查看与Dictionaries相关的binding chapter,似乎我们正在做的查询字符串中传递的参数没有记录。
我们是否看到了绑定的副作用?
我们用于将过滤器从查询字符串传递到字典的语法是否受支持?
【问题讨论】:
-
这似乎有点问题 - 绑定应该是关于使事物具有强类型以及您要求它丢弃它的字典。
-
@DanielA.White 我同意,但支持字典绑定。
标签: c# .net asp.net-core action