我有一个像这样的控制器动作:
public Foo Get([FromUri] Filter[] filters){...}
使用这样的枚举:
public enum Filter
{
Yes,
No,
FileNotFound
}
当我使用以下请求拨打我的控制器时:
/api/things?filters=garbagevalue
然后传递给控制器的值为Filter.Yes
(默认值)。是否有可能让webapi拒绝,可能是BadRequest或其他响应代码和/或异常,对具有enum参数的控制器的任何请求,其中enum参数值未知?或者,是否可以从查询字符串参数中过滤掉与枚举值不匹配的值?
我知道在枚举中有一个None
值并检测到它可能会更好,但我想避免将其添加到我的所有枚举中。此外,None
将是一个有效值,必须检测到,我将无法向提出请求的人提供任何反馈,查询参数无效。
谢谢!
答案 0 :(得分:5)
使用可为空的枚举类型:
public Foo Get([FromUri] Filter?[] filters){...}
数组中的未知/垃圾值将为null。