Просто чтобы получить список сообщений об ошибках для каждого свойства модели, которые не прошли проверку, как вы указали, как указано выше, используя метод расширения. т.е. ModelState.ToJson()
вам нужно создать статический класс со статической функцией ToJson(...)
. Пример кода будет выглядеть примерно так.
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);
}
}
ModelState
Свойство на каждом контроллере обычно ModelStateDictionary
, поэтому , если мы хотим , чтобы дополнительный метод для этого, то есть класс нам нужно расширить. Вы можете узнать больше о методах расширения в C #, следуя этой ссылке .
Теперь давайте посмотрим, как использовать наш метод расширения в примере действия контроллера:
public IActionResult Create(UserViewModel model)
{
if(!ModelState.IsValid)
{
string json = ModelState.ToJson();
// insert code to log json to file here
return BadRequest(ModelState);
}
}