Asp.net mvc 在整数属性上使用NotEmpty进行流畅的验证

Asp.net mvc 在整数属性上使用NotEmpty进行流畅的验证,asp.net-mvc,fluentvalidation,Asp.net Mvc,Fluentvalidation,我有以下代码: public class NewsEditViewDataValidator : AbstractValidator<NewsEditViewData> { public NewsEditViewDataValidator() { // Status unique identifier cannot be empty // Status unique identifier must be greater or

我有以下代码:

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
     }
}
公共类NewsEditViewDataValidator:AbstractValidator { 公共NewsEditViewDataValidator() { //状态唯一标识符不能为空 //状态唯一标识符必须大于或等于1 RuleFor(x=>x.StatusId) .NotEmpty() .WithMessage(“需要状态”) GreaterThanOrEqualTo先生(1) .WithMessage(“状态唯一标识符必须大于或等于1”); //其他规则集 } } StatusId是一个整数。在这种情况下NotEmpty是如何工作的?它验证了什么?整数还是字符串?对于检查整数是否为空的这一部分,单元测试是什么样子的

这用于验证我的MVC 3应用程序中的下拉列表。验证在视图上运行良好。更重要的是状态唯一标识符不能小于1。我想触发这个来验证我的对象。什么时候这样做不会空也不会火?是否有优先选择哪一个将首先被解雇?如果StatusId为0,将触发哪个规则集?如果是-1?在检查业务对象的id时,我不想空着使用视图和大于或等于0的QUALTO。有什么建议吗?

看看:

NotEmpty验证器

描述:确保指定的属性不为null、空字符串或空白(或值类型的默认值,例如int的0


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

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

StatusId
是一个
整数
。在这种情况下,
NotEmpty
是如何工作的? 它验证了什么

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

整数还是字符串

StatusId的类型,int

检查
整数
不是空的吗

这用于验证我的MVC 3应用程序中的下拉列表。这个 验证在视图上运行良好。
大于或等于
的部分是 状态唯一标识符不能小于
1
。这是我想要的 触发以验证我的对象。什么时候这样做将
NotEmpty
还不火吗

使用when或除非指定何时应测试或不应测试规则

是否有优先选择哪一个将首先被解雇

我相信这是按照您指定的顺序进行的

如果
StatusId
0
将触发哪个规则集

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

如果是
-1

第二条规则将失败

我希望
NotEmpty
在检查业务对象的id时使用视图和
greater或qualto
。有什么建议吗?

@Brendan Vogt

用NotNull()代替NotEmpty()

再看看我的问题。如果我将0传递给ID,哪个规则将首先触发,因为如果存在0,这两个规则都将触发。我如何知道偏好的顺序?我会接受这个答案,但在未来,试着回答一个问题,而不是半个问题。@Brendan Vogt:1)事实上,你的“问题”是由9个不同的问题组成的——其中至少有7个问题是通过上面的引文回答的。2) 我不知道解析顺序,但我想它将与您在规则声明中使用的顺序相同(您知道您可以调试它,对吗?)。3) 你似乎对我的回答感到不安,这很奇怪,因为我并没有冒犯你的意思。4) 如果我的回答不让你满意,那就不要接受。这就是为什么如此,毕竟——我们应该只接受我们满意的答案。
var validator = new NewsEditViewDataValidator();
validator.ShouldHaveValidationErrorFor(x => x.StatusID, 0);