Валидаторы Castle, как проверить, меньше/больше или равно

StackOverflow https://stackoverflow.com/questions/1358032

  •  20-09-2019
  •  | 
  •  

Вопрос

Я вижу атрибуты ValidateIsLesser и ValidateIsGreater.Но что, если я хочу выполнить ValidateIsLesserOrEqual и/или ValidateIsGreaterOrEqual.Нужно ли мне просто написать эти пользовательские атрибуты или для этого есть готовые возможности, которые мне трудно найти?

[ValidateNonEmpty]
[ValidateDate]
[ValidateIsLesser(IsLesserValidationType.Date, "EndDate", "Start Date must be before End Date.")]
public DateTime StartDate { get; set; }

[ValidateNonEmpty]
[ValidateDate]
[ValidateIsGreater(IsGreaterValidationType.Date, "StartDate", "End Date must be after the Start Date.")]
public DateTime EndDate { get; set; }
Это было полезно?

Решение

Вы можете использовать ValidateSelf атрибут и укажите собственную проверку для сравнений OrEqual:

[ValidateNonEmpty]
[ValidateDate]
public DateTime StartDate { get; set; }

[ValidateNonEmpty]
[ValidateDate]
public DateTime EndDate { get; set; }

[ValidateSelf]
public void ValidateDate(ErrorSummary errors)
{
    if (StartDate >= EndDate)
        errors.RegisterErrorMessage("StartDate", "Start date must be earlier than end date.");
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top