我使用mvc4进行流畅验证
在我的模型中,我有一个列表:
public List<int> TransDrops { get; set; }
在视图中为列表中的每个项目创建文本框。
我想随后确保填写每个字段。(不是空/空)
OrderDetailsViewModelValidator是模型的验证器,我需要什么?
由于
答案 0 :(得分:10)
首先,您必须对集合项使用可空整数类型,否则空文本框将绑定到零值,这使得无法区分空文本框并填充零
public List<int?> TransDrops { get; set; }
接下来,使用谓词验证器(必须规则):
RuleFor(model => model.TransDrops)
.Must(collection => collection == null || collection.All(item => item.HasValue))
.WithMessage("Please fill all items");
如果您需要阻止成功验证空集合,只需在谓词验证器之前添加NotEmpty()
规则:它会检查任何IEnumerable
不是null
,并且至少有1个项目。< / p>
答案 1 :(得分:0)
现在有一种更简单的方法,使用RuleForEach
:
RuleForEach(model => model.TransDrops)
.NotNull()
.WithMessage("Please fill all items");
请确保使用NotNull
而不是NotEmpty
,因为NotEmpty会验证类型的默认值(在本例中为int
,它是0)。
您可以在documentation
中查看更多详细信息