[英]ASP.NET Core MVC : optional enum param validation
我有一个 ASP.NET Core Web API 控制器,它采用一个选项枚举参数:
public enum MyEnum
{
Value1,
Value2
}
[ApiController]
public class MyController: ControllerBase
{
[HttpGet('/{e}/get')]
public async Task<ActionResult> GetSomething([FromQuery] MyEnum? e = null)
{
}
}
我对默认行为的期望是这样的:
e = null
?e=Value1
): e 用枚举值初始化?e=Magic
):错误请求最终,#3 不会发生。 是否有内置的枚举验证来实现这一点,或者有什么方法可以在不向管道添加任何额外过滤器的情况下验证模型?
我试图实现ValidationAttribute
,但它看起来与动作参数验证无关
public class EnumParamAttribute : ValidationAttribute
{
public override bool IsValid(object? value)
{
return false;
}
}
不会调用应用于操作参数的此属性
[HttpGet('/{e}/get')]
public async Task<ActionResult> GetSomething([FromQuery, EnumParam] MyEnum? e = null)
{
}
同时RangeAttribute
被正确调用,因此数据被验证
访问docs.microsoft.com尝试在控制器内使用IsDefined
。
[HttpGet('/{e}/get')]
public async Task<ActionResult> GetSomething([FromQuery] MyEnum? e = null)
{
if (!Enum.IsDefined(typeof(MyEnum), e))
return BadRequest($"The value {e} is not valid");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.