ASP Проверка входных данных ядра Как мне требовать key2, когда key1 присутствует в FromQuery или FromBody? - PullRequest
0 голосов
/ 17 апреля 2020

Я был PHP / Laravel на протяжении большей части моей профессиональной карьеры разработчика, но затем в этом году мне было поручено перейти на tnet ядро ​​и далее, так что теперь я столкнулся с проблемой, когда пытался проверить ввод диапазона дат, я не смог найти его где-нибудь в документации, но в laravel я использовал эту проверку

$request->validate([
    'toDate'=>'required_with:fromDate'
]);

Как мне добиться этого в ASP ядре?

1 Ответ

0 голосов
/ 20 апреля 2020

Я пытаюсь проверить ввод диапазона дат, но не могу найти его где-то в документах

Вы можете попробовать создать пользовательский атрибут проверки для проверки toDate на основе значения fromDate, как показано ниже.

public class CheckEndDateAttribute : ValidationAttribute
{
    public string GetErrorMessage() =>
        $"ToDate must be later than FromDate.";

    protected override ValidationResult IsValid(object value,
        ValidationContext validationContext)
    {
        var note = (Note)validationContext.ObjectInstance;
        var todate = ((DateTime)value);

        var fromdate = note.FromDate;

        if (todate < fromdate)
        {
            return new ValidationResult(GetErrorMessage());
        }

        return ValidationResult.Success;
    }
}

В классе модели примените этот пользовательский атрибут проверки к ToDate свойству

public class Note
{
    //other properties

    [DataType(DataType.Date)]
    public DateTime FromDate { get; set; }

    [DataType(DataType.Date)]
    [CheckEndDate]
    public DateTime ToDate { get; set; }

    //...
}

Результат теста

enter image description here

...