我有2个属性电子邮件和确认电子邮件。如何为两个本地化属性名称提供字符串格式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}'和'{??? }”字段不匹配。

我应该在???中使用什么?这样说:-

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

最佳答案

解决此问题的一种方法是在消息中定义自定义参数:{0}。因此,您的消息在资源文件中看起来像这样。

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


并将"ConfirmEmail"作为附加参数传递给WithLocalizedMessage调用:

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

10-07 14:46