Fluent验证比较字段字符串格式args

时间:2013-06-22 16:34:57

标签: validation asp.net-mvc-4 server-side fluent fluentvalidation

我有2个属性电子邮件和确认电子邮件。如何为本地化属性Name提供字符串格式arg 例如: -

public class Account 
{
  public string Email {get;set;}
  public string ConfirmEmail {get;set;}
}

Public AccountValidator : AbstractValidator<Account>
{
   public AccountValidator()
   {
      RuleFor(a=> a.Email)
                  .Equal(a=>a.ConfirmEmail)
                  .WithLocalizedMessage(() => MyResource.compareFields);
    }  
}

我的资源文件包含以下消息: -

'{PropertyName}'和'{??? }'字段不匹配。

我应该在???中使用什么?所以它说: -

'电子邮件'和'确认电子邮件'字段不匹配。

1 个答案:

答案 0 :(得分:4)

解决此问题的一种方法是在邮件中定义自定义参数:{0}。因此,您的资源文件中的消息将如下所示。

'{PropertyName}' and '{0}' fields do not match.

并将"ConfirmEmail"作为额外参数传递给WithLocalizedMessage来电:

RuleFor(a => a.Email)
    .Equal(a => a.ConfirmEmail)
    .WithLocalizedMessage(() => MyResource.compareFields, "ConfirmEmail");