如何验证模型取决于使用核心 Web API asp.net 布尔数据类型值



我已经使用核心 Web API 创建了一个模型 asp.net 我必须验证该属性取决于 bool 数据类型属性值。

如果 IsWaitingList 属性为 true,则 WaitingListEncounterOrOtherEncounter 属性是必需属性,否则它不是必填字段。

public class CenterConfiguration
    {
        public Guid Id { get; set; } = Guid.NewGuid();
        public bool? IsWaitingList { get; set; }
        [Required(ErrorMessage = "Please enter waiting list encounter or other encounter")]
        public int WaitingListEncounterOrOtherEncounter { get; set; }
    } 

如果有人知道,请告诉我。

您可以实现IValidatableObject来检查复杂的验证条件。

public class CenterConfiguration : IValidatableObject {
    public Guid Id { get; set; } = Guid.NewGuid();
    public bool? IsWaitingList { get; set; }
    public int? WaitingListEncounterOrOtherEncounter { get; set; }
    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) {
         if (IsWaitingList && !WaitingListEncounterOrOtherEncounter.HasValue) {
             yield return new ValidationResult(
                 "Please enter waiting list encounter or other encounter",
                 new[] { "WaitingListEncounterOrOtherEncounter" }
             );
         }
    }
}

另请注意,我将WaitingListEncounterOrOtherEncounterint 更改为 int?,因此您实际上可以将此值留空。

参见 如何使用 IValidatableObject?

最新更新