当模型使用DataAnnotations包含另一个类的对象作为属性时,如何在控制台应用程序的.Net Core 3.1中验证模型? 更新

问题描述

我有以下请求模型:

public class VisitRequest
    {
        public ProviderInfo Provider { get; set; }

        [Required]
        [MaxLength(64)]
        public string PayerId { get; set; }
    }

我有如下的自定义类:

 public class ProviderInfo
    {
        [Required]
        [MaxLength(15)]
        public string TaxId { get; set; }

        [Required(ErrorMessage = " Qualifier is required.")]
        [MaxLength(15)]
        public string NPI { get; set; }
    }

我目前正在使用ValidationContext进行模型验证:

var visitData = JsonConvert.DeserializeObject<VisitRequest>(jsonString);
var vc = new ValidationContext(visitData);
var errorResults = new List<ValidationResult>();
var isValid = Validator.TryValidateObject(visitData,vc,errorResults,true);

我的演示json请求如下:

{
'Member': {
  'Qualifier': 'MedicaidID','Identifier': '100'
  },'ExternalVisitID': '123456789',}

现在,我在ErrorResult中收到的错误消息为:

PayerId is required.

但是我没有得到自定义类的验证。如何在 .Net Core Console应用程序中实施此操作? 我对.Net Core相当陌生,因此不胜感激。谢谢!


更新:

我遵循@John H给出的答案,但是仍然存在一个问题。

如果我的要求是:

'Provider' : {
      'TaxId' : null
}

它将正常工作,因为它能够识别出这是ProviderInfo对象的类型。

但是,如果我的请求中不包含有关提供商的任何信息:

{
'ExternalVisitID': '123456789','EVVMSID': '100',}

然后它将无法验证对象。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)