Я пытаюсь создать пользовательскую проверку сообщения, которая включает два или более атрибута.
Вот упрощенная версия моего DTO:
public class FooDTO
{
public int Id { get; set; }
public int Name { get; set; }
//more attributes...
public bool IsValid
{
get
{
if (string.IsNullOrEmpty(this.Name) && (this.Id == 0))
return false; //You will have to specify at least one of the following: Id or Name
if (this.Name == "Boo" && this.ID = 999)
return false; //Boo name and Id of 99 are forbidden
//More validation ifs.
return true;
}
}
}
И моя текущая реализация контроллера выглядит например:
public async Task<IActionResult> DoSomething(FooDTO fooDTO)
{
if (!FooDTO.IsValid)
return BadRequest("");
// Rest of code
}
Эта реализация не подтверждает пользователя соответствующим сообщением, например, когда отсутствуют и Id
, и Name
, я хочу, чтобы пользователь был уведомлен с чем-то вроде "Вы нужно будет указать хотя бы одно из следующего: Id or Name "ошибка проверки.
Есть ли способ использовать ValidationAttribute
для проверки двух или более свойств, включающих сложную проверку? (это мое предпочтительное решение)
Или элегантный способ создания настраиваемого сообщения об ошибке для отправки при перегрузке BadRequest(string message)
?