我有以下代码:
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?我希望NotEmpty在检查业务对象的id时使用视图和GreaterThanOrEqualTo。有什么建议吗?
答案 0 :(得分:14)
NotEmpty Validator
描述:确保指定的属性不为null,为空字符串或空格(或值类型的默认值,例如0为int )。
因此NotEmpty()
将仅避免该属性的默认值(0)。
答案 1 :(得分:1)
我建议您下载源代码并在不确定时查看代码/测试。
StatusId
是integer
。在这种情况下NotEmpty
如何运作? 它验证了什么?
StatusId的值是其类型的默认值。 (0)
整数还是字符串?
StatusId的类型,int。
这部分检查一个单元测试的样子是什么样的
integer
不是空的?
var validator = new NewsEditViewDataValidator();
validator.ShouldHaveValidationErrorFor(x => x.StatusID, 0);
这用于验证我的MVC 3应用程序中的下拉列表。该 验证在视图上运行良好。
GreaterThanOrEqualTo
部分是 状态唯一标识符永远不会少于1
。这就是我想要的 触发验证我的对象。什么时候这样做NotEmpty
还不开火?
使用何时或除非指定何时应该或不应该测试规则。
是否首先要解雇哪一个?
我相信它符合您指定的顺序。
如果
StatusId
是0
哪个规则集会触发?
根据您设置的级联选项,验证将在第一次出错时失败或检查属性的其他规则。
如果是
-1
?
第二条规则会失败。
我希望NotEmpty
在查看业务对象的ID时使用视图和GreaterThanOrEqualTo
。有什么建议吗?
答案 2 :(得分:0)
@Brendan Vogt
使用NotNull()而不是NotEmpty()