首页 > 解决方案 > 流利的验证检查空或最小最大字符串长度

问题描述

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

我必须验证具有多个字符串属性的模型。它们中的每一个都可以是Null或介于1和之间的100字符。

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

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但我不确定这种特殊方法。

标签: c#fluentvalidation

解决方案


推荐阅读