Mis*_*siu 6 c# fluentvalidation asp.net-web-api2
在负责验证的类内部我有简单的规则:
RuleFor(u => u.Id)
.Cascade(CascadeMode.StopOnFirstFailure)
.NotEmpty().WithMessage("Id is required")
.Must(ValidateId);
Run Code Online (Sandbox Code Playgroud)
下面是我的ValidateId功能:
private bool ValidateId(CreateAccountBindingModel model, string id, PropertyValidatorContext context)
{
if (id=="test")
{
context.Rule.CurrentValidator.ErrorCodeSource = new StaticStringSource("You are testing");
return false;
}
var idValid = IdValidator.IsValid(id);
if (!idValid)
{
context.Rule.CurrentValidator.ErrorCodeSource = new StaticStringSource("Id is invalid");
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
如果我运行我的验证器,我会得到默认错误,而不是我在函数中指定的自定义错误。
我尝试使用以下方法设置它们:
context.Rule.CurrentValidator.ErrorCodeSource = new StaticStringSource("Id is invalid");
Run Code Online (Sandbox Code Playgroud)
但没有任何运气。
如何在验证函数中定义错误消息?
您可以改用 CustomValidator:
RuleFor(u => u.Id)
.Cascade(CascadeMode.StopOnFirstFailure)
.NotEmpty().WithMessage("Id is required")
.Custom(ValidateId);
Run Code Online (Sandbox Code Playgroud)
和下面 -ValidateId方法:
private void ValidateId(string id, CustomContext context)
{
if (id == "test")
{
context.AddFailure("You are testing");
}
var idValid = IdValidator.IsValid(id);
if (!idValid)
{
context.AddFailure("Id is invalid");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6077 次 |
| 最近记录: |