Występuje problem, w którym próbuję określić, która ValidationAttribute zwróciła określony błąd ModelError. Mam punkt końcowy w moim interfejsie API, który przyjmuje model taki jak;Jak określić, która funkcja sprawdzania poprawności zwróciła błąd ModelError
public class MyClass
{
[Required]
[Range(0, 3)]
public int? Number { get; set; }
[Required]
[Range(0, 3)]
public int? NumberTwo { get; set; }
}
i filtr w celu sprawdzenia, czy ModelState jest ważny;
public class ValidateModelAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (!actionContext.ModelState.IsValid)
{
IEnumerable<ModelError> errors = actionContext.ModelState.Values.SelectMany(s => s.Errors);
// ...
}
}
}
Widzę, że ModelError ma dwie właściwości; Komunikat o błędzie, który jest typu ciąg, i wyjątek, który jest typu wyjątek. Chciałbym mocno napisany sposób określić, który ValidationAttribute [Wymagany] lub [Range (0, 3)] zwrócił odpowiedź błędu bez wykonywania manipulacji ciągami. Czy istnieje sposób na zwrócenie niestandardowej właściwości za pomocą tych atrybutów, których nie znam?
Jeśli klient miał zakładać model taki jak
{
"NumberTwo":10
}
Ostatecznym celem byłoby produkować odpowiedzi z interfejsu API, takie jak następujące;
{
"supportCode" : "1234567890",
"errors" : [{
"code" : "Missing",
"message" : "The Number field is required."
}, {
"code" : "Invalid",
"message" : "The field NumberTwo must be between 0 and 3."
}]
}