Web Api中严格的枚举查询字符串解析

时间:2014-02-04 19:10:44

标签: c# asp.net-web-api

我有一个像这样的控制器动作:

public Foo Get([FromUri] Filter[] filters){...}

使用这样的枚举:

public enum Filter
{
   Yes,
   No,
   FileNotFound
}

当我使用以下请求拨打我的控制器时:

/api/things?filters=garbagevalue

然后传递给控制器​​的值为Filter.Yes(默认值)。是否有可能让webapi拒绝,可能是BadRequest或其他响应代码和/或异常,对具有enum参数的控制器的任何请求,其中enum参数值未知?或者,是否可以从查询字符串参数中过滤掉与枚举值不匹配的值?

我知道在枚举中有一个None值并检测到它可能会更好,但我想避免将其添加到我的所有枚举中。此外,None将是一个有效值,必须检测到,我将无法向提出请求的人提供任何反馈,查询参数无效。

谢谢!

1 个答案:

答案 0 :(得分:5)

使用可为空的枚举类型:

public Foo Get([FromUri] Filter?[] filters){...}

数组中的未知/垃圾值将为null。