Ho un problema in cui sto cercando di determinare quale ValidationAttribute ha restituito un particolare Errore Modello. Ho un endpoint nel mio web API che accetta un modello come;Come determinare quale ValidationAttribute ha restituito un Errore Modello
public class MyClass
{
[Required]
[Range(0, 3)]
public int? Number { get; set; }
[Required]
[Range(0, 3)]
public int? NumberTwo { get; set; }
}
e un filtro per verificare che ModelState sia valido;
public class ValidateModelAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (!actionContext.ModelState.IsValid)
{
IEnumerable<ModelError> errors = actionContext.ModelState.Values.SelectMany(s => s.Errors);
// ...
}
}
}
Vedo che l'errore ModelError ha due proprietà; ErrorMessage che è di tipo string, e Exception che è di tipo Exception. Vorrei un metodo fortemente tipizzato per determinare quale ValidationAttribute [Required] o [Range (0, 3)] ha restituito la risposta all'errore senza eseguire la manipolazione della stringa. C'è un modo per restituire una proprietà personalizzata usando questi attributi che non ho familiarità con?
Se il cliente dovesse inviare un modello come
{
"NumberTwo":10
}
L'obiettivo finale sarebbe quello di produrre una risposta dal API come le seguenti;
{
"supportCode" : "1234567890",
"errors" : [{
"code" : "Missing",
"message" : "The Number field is required."
}, {
"code" : "Invalid",
"message" : "The field NumberTwo must be between 0 and 3."
}]
}