将枚举参数传递给 WebApi 方法
Pass Enum Parameter to WebApi method
正在尝试将枚举类型值传递给 WebApi,但它正在接受枚举整数以外的任何值。
我们可以限制只接受枚举值吗?
public class ValuesController : ApiController
{
[HttpGet]
[Route("api/getName/{Gender}")]
public IEnumerable<string> Get(Gender gender)
{
Gender g = gender;
return new string[] { "value1", "value2" };
}
}
枚举值
public enum Gender
{
Male,
FeMale
}
例如:
- http://localhost:58984/api/getName/1 - 解析为 FeMale
- http://localhost:58984/api/getName/6 - 它正在接受 6 但我想抛出一个异常。
你必须手动检查这个,ASP.NET MVC 不会为你做那个:
Type enumType = gender.GetType();
bool isEnumValid = Enum.IsDefined(enumType, gender);
if (!isEnumValid) {
throw new Exception("...");
}
除了抛出异常,您还可以在模型上使用验证器来检查枚举是否正确。
通过参数传入无效枚举的原因是,因为枚举是整数,解释。
正在尝试将枚举类型值传递给 WebApi,但它正在接受枚举整数以外的任何值。
我们可以限制只接受枚举值吗?
public class ValuesController : ApiController
{
[HttpGet]
[Route("api/getName/{Gender}")]
public IEnumerable<string> Get(Gender gender)
{
Gender g = gender;
return new string[] { "value1", "value2" };
}
}
枚举值
public enum Gender
{
Male,
FeMale
}
例如:
- http://localhost:58984/api/getName/1 - 解析为 FeMale
- http://localhost:58984/api/getName/6 - 它正在接受 6 但我想抛出一个异常。
你必须手动检查这个,ASP.NET MVC 不会为你做那个:
Type enumType = gender.GetType();
bool isEnumValid = Enum.IsDefined(enumType, gender);
if (!isEnumValid) {
throw new Exception("...");
}
除了抛出异常,您还可以在模型上使用验证器来检查枚举是否正确。
通过参数传入无效枚举的原因是,因为枚举是整数,解释