我有一个验证器,我正在尝试使用一些会话变量作为验证逻辑的一部分,但是base.Request总是返回NULL。我已按照指示将其添加到lambda函数中,并且验证文档似乎已过时,因为Fluent validation for request dtos部分中的提示使用IRequiresHttpRequest
,但AbstractValidator类已实现{ {1}}。
这是我的代码:
IRequiresRequest
我有什么遗失的吗?
答案 0 :(得分:4)
只能在RuleFor()
lambda中访问注入的依赖项,RuleSet()
中的委托在构造函数初始化时执行,以设置该RuleSet的规则。
因此,您需要将base.Request
的访问权限更改为RuleFor()
lambda:
RuleSet(ApplyTo.Post | ApplyTo.Put, () => {
RuleFor(c => c.Reference)
.Must(x => !string.IsNullOrEmpty(x) &&
(Request.GetSession() as CustomAuthSession).Region.GetCountry() == RegionCodes.AU);
});