Я думаю, что нашел решение, передав контекст моему валидатору. Однако, если что-то выглядит неправильно или неуместно, пожалуйста, дайте мне знать.
public class CategoryModel
{
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
public class CategoryModelValidator : AbstractValidator<CategoryModel>
{
public CategoryModelValidator(IHttpContextAccessor context)
{
if (context.HttpContext.Request.Method == HttpMethods.Post)
RuleFor(x => x.ID).Empty();
if (context.HttpContext.Request.Method == HttpMethods.Put)
RuleFor(x => x.ID).NotEmpty();
RuleFor(x => x.Name).Length(1, 30);
}
}
Передача контекста была проще, чем я думал. Все, что мне нужно было сделать, это зарегистрировать его в моем методе ConfigureServices
с помощью services.AddHttpContextAccessor()
, а DI позаботится обо всем остальном.
Если честно, это довольно удобный инструмент проверки