流利验证检查是否为空或最小最大字符串长度

时间:2019-07-09 10:56:23

标签: c# fluentvalidation

我找不到要求确切的考试问题的问题,所以我正在写自己的问题。

我必须验证具有多个字符串属性的模型。它们每个可以是Null,也可以是1100个字符之间。

我还有其他一些使用此方法的验证器:

RuleFor(model => model.Name)
            .Must(name => string.IsNullOrEmpty(name) || name.Length > minLength)
            .WithErrorCode(ErrorCodes.MinStringLength)
            .WithState(model => new
            {
                expected = minLength,
                actual = model.Name.Length
            });

但是,我还需要检查maxLength,基本上是在复制上面的表达式,但是要检查name.Length < maxLength。鉴于我必须以这种方式验证多个属性,因此我认为可以进行一些优化以减少为此所需的代码量。

我开始实施的一件事,但我不知道如何使它起作用:

RuleFor(model => model.Name)
            .Must(name => string.IsNullOrEmpty(name) || (name.Length > minLength || name.Length < maxLength))
            .WithErrorCode(name.Length <= minLength ? ErrorCodes.MinStringLength : ErrorCodes.MaxStringLength)
            .WithState(model => new
            {
                expected = model.Name <= minLength ? minLength : maxLength,
                actual = model.Name.Length
            });

这里的问题是,在.WithErrorCode(..中,我没有访问namemodel的权限。我想我可以将它们分配给RuleFor之外的变量,但是我不确定这种特定方法。

0 个答案:

没有答案