Il suffit d'obtenir une liste des messages d'erreur pour chaque propriété de modèle qui a échoué la validation de la manière que vous voulez comme indiqué ci-dessus en utilisant une méthode d'extension, c'est à dire ModelState.ToJson()
vous devez créer un statique avec une fonction statique ToJson(...)
. L'exemple de code ressemblera à ceci.
public static class ModelStateExtensions
{
/// <summary>
/// Reads all the error messages in a <see cref="ModelStateDictionary"/> as
/// a collection and returns a JSON <see cref="string"/> of the list.
/// </summary>
/// <param name="modelstate">Current modelstate assuming that you've checked
/// and confirmed that is Invalid using <see
/// cref="ModelStateDictionary.IsValid"/>
/// </param>
/// <returns>
/// Collection of validation errors for the model as a JSON string.
/// </returns>
public static string ToJson(this ModelStateDictionary modelstate)
{
List<string> errors = modelstate.Values
.SelectMany(x => x.Errors)
.Select(x => x.ErrorMessage)
.ToList();
return JsonConvert.SerializeObject(errors);
}
}
El ModelState
de chaque contrôleur est normalement un ModelStateDictionary
Donc, si nous voulons une méthode supplémentaire, c'est la classe que nous devons étendre. Vous pouvez en apprendre davantage sur les méthodes d'extension en C# en suivant ce qui suit Lien .
Voyons maintenant comment utiliser notre méthode d'extension dans un exemple d'action de contrôleur :
public IActionResult Create(UserViewModel model)
{
if(!ModelState.IsValid)
{
string json = ModelState.ToJson();
// insert code to log json to file here
return BadRequest(ModelState);
}
}