Sub*_*ash 2 c# validation asp.net-mvc fluentvalidation
我正在使用Fluent Validation进行服务器端验证.我已经创建了一组将被验证的规则.所有这些规则都是我的验证器中的单个函数.
public SampleValidator()
{
Validate_Authorisation();
ValidateTitle_NotEmpty();
ValidateGender_NotEmpty();
ValidateFirstName_Regex();
ValidateFirstName_NotEmpty();
ValidateSurname_NotEmpty();
ValidateSurname_Regex();
ValidateMobilePhone_Regex();
}
private void Validate_Authorisation()
{
RuleFor(Model=> Model)
.Must(Model=> IsUserAuthorised(UserName))
.WithName("Authorisation Check");
}
private void ValidateTitle_NotEmpty()
{
RuleFor(model=> model)
.Must(title=> !string.IsNullOrEmpty(title))
.WithName("Title");
}
private void ValidateGender_NotEmpty()
{
RuleFor(model=> model)
.Must(Gender=> !string.IsNullOrEmpty(Gender))
.WithName("Gender");
}.... And others
Run Code Online (Sandbox Code Playgroud)
现在,我想在授权验证失败时停止验证所有其他验证.我不想使用CascadeMode.StopOnFirstFailure,因为它总是检查第一次验证失败并停止验证其他验证失败.当授权验证失败时,有没有办法可以返回服务(从调用验证器的位置).
如果您将Validate_Authorisation方法更改为以下内容:
private IRuleBuilderOptions<Model, string> Validate_Authorisation()
{
RuleFor(Model=> Model)
.Must(Model=> IsUserAuthorised(UserName))
.WithName("Authorisation Check");
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用dependentRules扩展方法执行以下操作:
Validate_Authorisation().DependentRules(rules =>
{
ValidateTitle_NotEmpty();
ValidateGender_NotEmpty();
ValidateFirstName_Regex();
ValidateFirstName_NotEmpty();
ValidateSurname_NotEmpty();
ValidateSurname_Regex();
ValidateMobilePhone_Regex();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1513 次 |
| 最近记录: |