在文档中
要为特定属性指定验证规则,请调用RuleFor方法,并传递一个表示要验证的属性的lambda表达式。
这是否意味着我必须仅在lambda中编写属性?
我可以使用扩展方法IsSomeCheck()吗?
RuleFor的代码风格是否更重要?
RuleFor(x => x.IsSomeCheck())
.NotEqual(true)
.WithMessage("Some Text!");
例如,我有
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
bool BeAverageHumanAge()
{
return (Age >= 0 && Age <= 100);
}
}
所以
RuleFor(x => x.BeAverageHumanAge())
.NotEqual(true)
.WithMessage("Some Text!");
这是非法的吗?
答案 0 :(得分:1)
在RuleFor
方法的lambda中,我们指定要在其上进行验证的属性。例如,
考虑一个叫做Person-
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
如果您希望验证Person
实例的使用期限,则可以编写如下规则:
RuleFor(x => x.Age)
.GreaterThan(0) // in-built validator method
.WithMessage("Age must be greater than 0");
假设您希望添加一些自定义年龄检查,那么您可以为此编写自己的方法。像这样:
bool BeAverageHumanAge(int age)
{
if(age >= 0 && age <= 100)
return true;
return false;
}
此方法可用于验证年龄,例如:
RuleFor(x => x.Age)
.Must(BeAverageHumanAge) // invoking custom validation method
.WithMessage("Age does not lie in average human age range");