Web API: получить недействительные поля из модели
Есть ли способ связать ошибку с Modelstate.Values
с неверными полями из модели?
У меня есть что-то вроде
foreach (var error in this.ModelState.Values)
{
Console.WriteLine(error.Errors);
}
Но этот код возвращает только ошибки.
2 ответа
Вы можете получить как сообщения об ошибках, так и связанные с ними параметры из ModelState и сохранить их в парах ключ-значение:
var Errors = ModelState.Keys.Where(i => ModelState[i].Errors.Count > 0)
.Select(k => new KeyValuePair<string, string>(k, ModelState[k].Errors.First().ErrorMessage));
Этот запрос Linq сначала проверяет и выбирает только те параметры, в которых есть ошибки, и из этих параметров мы хотим выбрать и имя параметра, и соответствующее сообщение об ошибке, которое мы храним в парах ключ-значение.
ModelState - это просто словарь с парами ключ и значение. Итак, если вы хотите получить свойство и связанные с ним ошибки, вы будете делать:
foreach (var modelError in ModelState)
{
string propertyName = modelError.Key;
if (modelError.Value.Errors.Count > 0)
{
//...
}
}
Тебе стоит попробовать:
error.Errors.SelectMany (x => x.ErrorMessage)
в случае, если вам нужно получить сообщения об ошибках. (Вам понадобится ссылка на System.Linq)