如果参数不存在,如何使绑定到请求参数的查询过滤器不活动?
例如:我有一个MyQuery
可以通过投影访问的查询MyProjection
。我在该查询中添加了一个过滤器,我说该MyDate
字段应该等于{Request.QueryString:MyDate}
. 我希望 URL 喜欢~/MyProjection?MyDate=2016-03-08
按给定值过滤内容项,但 url~/MyProjection
只是不按该字段过滤。但这不是发生的情况:无论如何都会将条件添加到查询中,并且它的形式为“ [minimum DateTime value] < MyDate < [maximum DateTime value]
”。这不好,因为它会过滤掉具有 NULL 值的字段。如果我尝试对数字字段执行相同的操作,情况会更糟,因为当参数不存在时它会引发异常。
我知道我可以创建一个新的查询和投影来获得不同的选项,但这似乎有点矫枉过正——而且,如果我想创建一个高级搜索表单,它必须以单个投影为目标。
有没有“官方”的方式来做到这一点?还是解决方法?或者这在 Orchard 中根本不支持?