【发布时间】:2019-03-13 17:58:58
【问题描述】:
我在 API 控制器中有一个 GET 方法。我希望使用自定义验证属性验证该方法,如下所示。但是由于某些原因它没有被解雇。
[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public class CheckValidRoute : ValidationAttribute
{
private readonly string _apiRoute;
private readonly string _operation;
public override bool RequiresValidationContext { get { return true; } }
public CheckValidRoute(string apiRoute, string operation)
{
_apiRoute = apiRoute;
_operation = operation;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
//Validation logic here
}
}
控制器
public class TestController : ControllerBase
{
[HttpGet("production/{movieId}/Test")]
[ProducesResponseType(typeof(ResponseModel<string>), 200)]
[Authorize(Policy = SecurityConstants.PseudofilmAuthorizationPolicy)]
[CheckValidRoute("production/{movieId}/Test", "GET")]
public async Task<ResponseModel<string>> TestGet(long movieId)
{
return ResponseModelHelper.BuildResponse("Success", $"production/{movieId}/Test", "Test");
}
}
我不确定我在这里缺少什么。
-艾伦-
【问题讨论】:
-
为什么你认为这段代码应该被解雇?你有一些过滤器,检查这个属性?你读过文档吗?此外,这应该命名为
CheckValidRouteAttribute。 -
这个名字我肯定会检查。将其移至授权上方,以确保不会妨碍您。 docs.microsoft.com/en-us/aspnet/core/mvc/models/… 用于文档
-
@StevenMayer,感谢您的链接,但标题“ASP.NET Core MVC 中的模型验证”不会打扰您?
-
我阅读了 Net Core 自定义属性,他的代码就是为此,所以提供了我用于此的代码。我自己可能会考虑使用之前运行的不同过滤器而不是自定义验证属性:docs.microsoft.com/en-us/aspnet/core/mvc/controllers/…
标签: c# asp.net-core custom-attributes validationattribute