c# - 流利的验证检查空或最小最大字符串长度
问题描述
我找不到询问确切考试问题的问题,所以我正在编写自己的问题。
我必须验证具有多个字符串属性的模型。它们中的每一个都可以是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(..
我没有访问权限name
或model
。我想我可以将它们分配给外部的变量,RuleFor
但我不确定这种特殊方法。
解决方案
推荐阅读
- hadoop - tez shuffle 处理程序设置后失败:映射运算符初始化失败
- snowflake-cloud-data-platform - 雪花中的一流对象是什么意思?
- c++ - 如何在 C++ 中的同一程序中对 2D 字符串数组进行流式处理,然后对 2D 字符串数组进行流式处理。这是我写的代码。我是首发
- amazon-web-services - AWS Lambda C# - 通过其 vpc 端点调用 lambda
- kernel - 有没有办法调试softirq?
- swift - 为什么我不能在 struct 的属性初始化程序中使用实例成员,但 Apple 可以?
- java - 在 spring webflux 中添加 javax 验证以映射类型请求正文
- c# - USB VID 和 PID 表单文本框
- python - 如何在我的网络爬虫中实现多线程?
- azure-devops - 如何使用 Azure DevOps 在 Azure windows VM 上运行保存在 txt 文件中的 certutil 命令并将输出从 VM 复制到 ADO 或本地计算机