Вы используете неправильный базовый класс для реализации вашего атрибута.ValidationAttribute
используется на Models
для проверки значений их свойств.Примером этого является атрибут Required
.
В вашем случае вы хотите реализовать ActionFilter
, который может быть применен к методу контроллера и может выполнять проверку перед вызовом метода.Примером для вас может быть:
public class CheckValidRouteAttribute : ActionFilterAttribute
{
private readonly string _apiRoute;
private readonly string _operation;
public CheckValidRouteAttribute(string apiRoute, string operation) : base()
{
_apiRoute = apiRoute;
_operation = operation;
}
public override void OnActionExecuting(ActionExecutingContext context)
{
var request = context.HttpContext.Request;
var method = request.Method;
if (string.Compare(method, _operation, true) != 0)
{
context.Result = new BadRequestObjectResult("HttpMethod did not match");
}
}
}
В методе OnActionExecuting
вы можете выполнять проверки объекта HttpContext.Request
.Я оставил это как упражнение для вас, так как не знаю ваших точных требований: -)
После применения этого атрибута к вашему методу контроллера, будет вызываться OnActionExecuting
до того, как метод контроллера будет вызван такВы можете сделать свою проверку.
Вы можете узнать больше о ActionFilters здесь