【发布时间】:2020-05-04 15:58:05
【问题描述】:
我的控制器中有以下端点,我想为从查询传递的属性创建自定义验证。
[ApiController]
public class SampleController : ControllerBase
{
[HttpGet]
[Route("api/user")]
public IActionResult GetUsersByLevel(
[BindRequired, ValidLevelFromQuery(Name = "level")] string level)
{
...
}
}
我想要的结果是我创建了一个自定义FromQuery 属性,在这个示例中我将其描述为ValidLevelFromQuery。自定义属性将检查level 的值并且只接受"A", "B", and "C",对于任何其他值,对客户端的响应将是BadRequest。
目前我正在读取操作中的值后进行验证。我的目标是在请求管道中更早地进行此检查。
如果可能,我想避免使用IValidatableObject。
【问题讨论】:
-
您可以创建一个自定义属性并在其中设置您的逻辑,然后将该属性添加到您的参数中,例如 BindRequired。
-
谢谢,根据您的建议设法得出了解决方案。
标签: c# validation asp.net-core model-view-controller parameters