¿Cómo colocar el atributo requerido condicional en la propiedad de clase para trabajar con la API WEB?

Solo quiero poner el atributo obligatorio condicional que funciona con la API WEB

Ejemplo

public sealed class EmployeeModel { [Required] public int CategoryId{ get; set; } public string Email{ get; set; } // If CategoryId == 1 then it is required } 

Estoy usando la validación del estado del modelo a través de ( ActionFilterAttribute )

Puedes implementar tu propio ValidationAttribute . Quizás algo como esto:

 public class RequireWhenCategoryAttribute : ValidationAttribute { protected override ValidationResult IsValid(object value, ValidationContext validationContext) { var employee = (EmployeeModel) validationContext.ObjectInstance; if (employee.CategoryId == 1) { return ValidationResult.Success; } var emailStr = value as String; return string.IsNullOrEmpty(emailStr) ? new ValidationResult("Value is required.") : ValidationResult.Success; } } public sealed class EmployeeModel { [Required] public int CategoryId { get; set; } [RequireWhenCategory] public string Email { get; set; } // If CategoryId == 1 then it is required } 

Esto es solo una muestra. Puede tener problemas de lanzamiento, y no estoy seguro de que este sea el mejor enfoque para resolver este problema.