5

我有以下代码:

public class NewsEditViewDataValidator : AbstractValidator<NewsEditViewData>
{
     public NewsEditViewDataValidator()
     {
          // Status unique identifier cannot be empty
          // Status unique identifier must be greater or equal to 1
          RuleFor(x => x.StatusId)
               .NotEmpty()
               .WithMessage("Status is required")
               .GreaterThanOrEqualTo(1)
               .WithMessage("Status unique identifier must be greater or equal to 1");

          // Other rule sets
     }
}

StatusId 是一个整数。NotEmpty 在这种情况下如何工作?它验证了什么?整数还是字符串?这部分检查整数是否为空的单元测试会是什么样子?

这用于验证我的 MVC 3 应用程序中的下拉列表。验证在视图上​​运行良好。GreaterThanOrEqualTo 部分是状态唯一标识符永远不能小于 1。我想触发这个来验证我的对象。什么时候这样做NotEmpty也不会火?有没有优先考虑哪个会先被解雇?如果 StatusId 为 0,将触发哪个规则集?如果是-1?在检查业务对象的 id 时,我希望 NotEmpty 使用视图和 GreaterThanOrEqualTo。有什么建议么?

4

3 回答 3

19

查看文档

NotEmpty 验证器

说明:确保指定的属性不为 null、空字符串或空格(或值类型的默认值,例如 int 为 0)。

因此,NotEmpty()将只避免该属性的默认值 (0)。

于 2011-02-02T14:15:12.157 回答
2

我建议您下载源代码并在不确定时查看代码/测试。

StatusId是一个integerNotEmpty在这种情况下如何工作?它验证了什么?

即 StatusId 的值是其类型的默认值。(0)

整数还是字符串?

StatusId 的类型,int。

integer这部分检查 an是否为空的单元测试会是什么样 子?

var validator = new NewsEditViewDataValidator();
validator.ShouldHaveValidationErrorFor(x => x.StatusID, 0);

这用于验证我的 MVC 3 应用程序中的下拉列表。验证在视图上​​运行良好。部分是GreaterThanOrEqualTo状态唯一标识符永远不能小于1. 我想触发这个来验证我的对象。这种方式什么时候NotEmpty 也不会火?

使用 when 或 unless 指定何时应该或不应该测试规则。

 有没有优先考虑哪个会先被解雇?

我相信它是按照您指定的顺序。

 如果StatusId0哪个规则集会触发?

根据您设置的级联选项,验证将在第一个错误时失败或检查该属性的其他规则。

 如果是-1

第二条规则将失败。

我想NotEmpty使用视图并GreaterThanOrEqualTo在检查业务对象的 id 时。有什么建议么?

于 2011-04-26T16:33:06.460 回答
0

@Brendan Vogt
使用 NotNull() 而不是 NotEmpty()

于 2015-04-06T06:23:32.203 回答