C# 如何验证模型取决于使用asp.net核心web api的bool数据类型值

C# 如何验证模型取决于使用asp.net核心web api的bool数据类型值,c#,asp.net-mvc-4,asp.net-web-api2,asp.net-core-webapi,C#,Asp.net Mvc 4,Asp.net Web Api2,Asp.net Core Webapi,我已经使用asp.net核心web API创建了一个模型,并且我必须根据bool数据类型属性值验证属性 如果IsWaitingList属性为true,则WaitingListenCounterOtherConference属性为必填属性,否则它不是必填字段 public class CenterConfiguration { public Guid Id { get; set; } = Guid.NewGuid(); public bool? IsWait

我已经使用asp.net核心web API创建了一个模型,并且我必须根据bool数据类型属性值验证属性

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

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" }
             );
         }
    }
}
公共类中心配置:IValidatableObject{
公共Guid Id{get;set;}=Guid.NewGuid();
公共bool?IsWaitingList{get;set;}
公共int?WaitingListenCountorOtherConference{get;set;}
公共IEnumerable验证(ValidationContext ValidationContext){
if(IsWaitingList&!WaitingListenCountorOtherConference.HasValue){
返回新的ValidationResult(
“请输入等待名单遭遇或其他遭遇”,
新建[]{“WaitingListenCountorOtherConference”}
);
}
}
}
还请注意,我将
waitinglistencountorotherconference
int
更改为
int?
,因此您可以将此值保留为空

另见