繁体   English   中英

根据引用的类使用数据注释进行验证

[英]Validation using data annotation depending on referenced class

我可以根据引用我的模型类的类使用不同的验证消息吗?

例如

public class AdviceUnit
{
    public Client MainClient {get;set;}

    public Client PartnerClient {get;set;}

    public List<Investments> JointInvestments {get;set;}
}

public class Client
{
    public Guid Id {get;set;}

    [Required(ErrorMessage = "ERROR MESSAGE but a different ")]
    public string FirstName {get;set;}

    [Required(ErrorMessage = "client last name is missing")]
    public string LastName {get;set;}

    [Required(ErrorMessage = "client date of birth is missing")]
    public DateTime DateOfBirth {get;set;}

}

我真正想要的是针对主要客户和合作伙伴客户的另一条验证错误消息。

例如

[Required(ErrorMessage = "main client first name is missing")]
[Required(ErrorMessage = "partner client first name is missing")]

我的视图绑定到AdviceUnit对象。

就像BDH所说的(对不起,我没有偷你的答案,功劳归功于BDH首先发布评论),您可以实现一个自定义的必需验证属性。

作为概念证明:

  1. 将类型为“ ClientType”字符串的属性添加到Client类,将其设置为“ Main”或“ Partner”。 验证期间将检索此属性:
  public string ClientType {get; set;} 
  1. 实现自定义必需属性并设置替换键:
 public class CustomRequiredAttribute : RequiredAttribute { protected override ValidationResult IsValid (object value, ValidationContext validationContext) { var instance = validationContext.ObjectInstance; var instancePropertyValue = instance.GetType().GetProperty("ClientType").GetValue(instance, null); return new ValidationResult(ErrorMessage.Replace("[replaceText]" ,instancePropertyValue.ToString())); } } 
  1. 使用CustomRequiredAttribute,使用替换键:
 [CustomRequired(ErrorMessage = "[replaceText] client first name is missing ")] public string FirstName {get;set;} 

唯一需要注意的是,必须在发布/验证发生之前设置ClientType属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM