将Enum参数传递给Web Api方法

问题描述 投票:1回答:1

尝试将枚举类型值传递给Web Api,但它接受除枚举整数之外的任何值。

我们可以限制只接受枚举值吗?

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
}

例如:

  1. http://localhost:58984/api/getName/1 - 将其解决为FeMale
  2. http://localhost:58984/api/getName/6 - 它接受6但我想抛出一个例外。
c# asp.net-web-api asp.net-web-api-routing
1个回答
1
投票

你必须手动检查,ASP.NET MVC不适合你:

Type enumType = gender.GetType();
bool isEnumValid = Enum.IsDefined(enumType, gender);
if (!isEnumValid) {
  throw new Exception("...");
}

您也可以在模型上使用验证器来检查枚举是否正确,而不是抛出异常。

通过参数传入无效枚举的原因是因为枚举是整数,所以解释here

© www.soinside.com 2019 - 2024. All rights reserved.